0

How to make a JSON string into a javascript object. I am trying to convert the following string into JSON Object like this that is getting from the server

JSON String:

["{"title":"Admin Dhaka","href":"#0","dataAttrs":[],"data":["{\"title\":\"BNS HAJI MOHSIN\",\"href\":\"#0\",\"dataAttrs\":[\"{\\\"title\\\":\\\"id\\\",\\\"data\\\":\\\"51\\\"}\"]}","{\"title\":\"BNS ISSA KHAN\",\"href\":\"#1\",\"dataAttrs\":[\"{\\\"title\\\":\\\"id\\\",\\\"data\\\":\\\"1\\\"}\"]}","{\"title\":\"BNT KHADEM\",\"href\":\"#2\",\"dataAttrs\":[\"{\\\"title\\\":\\\"id\\\",\\\"data\\\":\\\"6\\\"}\"]}","{\"title\":\"BN DOCKYARD\",\"href\":\"#3\",\"dataAttrs\":[\"{\\\"title\\\":\\\"id\\\",\\\"data\\\":\\\"13\\\"}\"]}","{\"title\":\"BNT SEBAK\",\"href\":\"#4\",\"dataAttrs\":[\"{\\\"title\\\":\\\"id\\\",\\\"data\\\":\\\"7\\\"}\"]}","{\"title\":\"Naval Aviation\",\"href\":\"#5\",\"dataAttrs\":[\"{\\\"title\\\":\\\"id\\\",\\\"data\\\":\\\"89\\\"}\"]}","{\"title\":\"BNS SAIKAT\",\"href\":\"#6\",\"dataAttrs\":[\"{\\\"title\\\":\\\"id\\\",\\\"data\\\":\\\"40\\\"}\"]}","{\"title\":\"BNS Novojatra\",\"href\":\"#9\",\"dataAttrs\":[\"{\\\"title\\\":\\\"id\\\",\\\"data\\\":\\\"119\\\"}\"]}","{\"title\":\"BNS SHAH AMANAT\",\"href\":\"#10\",\"dataAttrs\":[\"{\\\"title\\\":\\\"id\\\",\\\"data\\\":\\\"11\\\"}\"]}"]}"]

As an example, I have given one object in the above code actually the Array is a list of Objects like this

[obj1, obj2....]

I tryed as follows:

var arr = '<?php echo !empty($treeView) ? $treeView : "[]"; ?>';
 arr = JSON.parse(arr);
 console.log(arr);

Getting the following error:

Uncaught SyntaxError: Unexpected token t in JSON at position 4

PHP Code:

function ship_by_area_zone(){
 $area_list = [];
 $ship_list = [];
 $zone = $this->utilities->findAllByAttributeWithOrderBy("bn_navyadminhierarchy", array("ADMIN_TYPE" => 1, "ACTIVE_STATUS" => 1), "CODE");
 $area = $this->utilities->findAllByAttributeWithOrderBy("bn_navyadminhierarchy", array("ADMIN_TYPE" => 2, "ACTIVE_STATUS" => 1), "CODE");
 // area wise ship
 foreach ($area as $key=>$value)
 {
 $row = $this->db->query("select * from bn_ship_establishment where AREA_ID = $value->ADMIN_ID and ACTIVE_STATUS = 1 order by CODE asc")->row();
 if($row)
 {
 $dataAttrs = array();
 $dataAttrs['title'] = 'id';
 $dataAttrs['data'] = $row->SHIP_ESTABLISHMENTID;
 $dataAttrs = json_encode($dataAttrs);
 $ship_row = array();
 $ship_row['title'] = $row->NAME;
 $ship_row['href'] = "#$key"; //"#1"
 $ship_row['dataAttrs'] = [$dataAttrs];
 $ship_list[] = json_encode($ship_row);
 }
 }
 // zone wise area
 foreach ($zone as $key=>$value)
 {
 $row = $this->db->query("select * from bn_navyadminhierarchy where ACTIVE_STATUS = 1 and PARENT_ID = $value->ADMIN_ID order by CODE asc")->row();
 if($row)
 {
 $area_row = array();
 $area_row['title'] = $row->NAME;
 $area_row['href'] = "#$key";
 $area_row['dataAttrs'] = [];
 $area_row['data'] = $ship_list;
 $area_list[] = json_encode($area_row);
 }
 }
 return json_encode($area_list);
 }

Can anyone help me?

Thanks in advance!

asked Feb 4, 2019 at 6:50
8
  • ["{"title":" is malformed JSON. Try using json_encode instead Commented Feb 4, 2019 at 6:52
  • Try usng JSON.parse(), var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}'); Commented Feb 4, 2019 at 6:53
  • Your JSON is not validated. Please validate the JSON from here: jsonlint.com and use JSON.parsey() to convert JSON to Object. Commented Feb 4, 2019 at 6:56
  • How you are generating this JSON? Commented Feb 4, 2019 at 6:59
  • I am making JSON Like this return json_encode([$area_list]); @SamiAhmedSiddiqui Commented Feb 4, 2019 at 7:02

3 Answers 3

2

You need to use json_encode in your PHP:

var arr = '<?php echo json_encode(!empty($treeView) ? $treeView : "[]"); ?>';
answered Feb 4, 2019 at 6:55
Sign up to request clarification or add additional context in comments.

Comments

1

First of all, the json string you have there is invalid. You can check free online to validate the json. Once you have a valid json, you can use JSON.parse() to convert it to JSONObject

answered Feb 4, 2019 at 6:56

Comments

1
// converting a simple javascript object to JSON object
 my_details = 
 {
 "name" : "SL",
 "age " : "30" ,
 "photo" : "imgMe.jpg"
 }
my_details_in_json = JSON.stringify(my_details);
// "{"name":"SL","age ":"30","photo":"imgMe.jpg"}" --> my_details_in_json
Nihal
5,3547 gold badges26 silver badges41 bronze badges
answered Feb 4, 2019 at 7:04

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.