如何将JSON字符串转换为javascript对象。我正在尝试将以下字符串转换为从服务器获取的JSON对象
JSON字符串:
["{"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\\\"}\"]}"]}"]
作为示例,我在上面的代码中给了一个对象,实际上Array是这样的对象列表
[obj1, obj2....]
我尝试如下:
var arr = '<?php echo !empty($treeView) ? $treeView : "[]"; ?>';
arr = JSON.parse(arr);
console.log(arr);
出现以下错误:
Uncaught SyntaxError: Unexpected token t in JSON at position 4
PHP代码:
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);
}
有人可以帮助我吗?
谢谢!
答案 0 :(得分:2)
您需要在PHP中使用json_encode
:
var arr = '<?php echo json_encode(!empty($treeView) ? $treeView : "[]"); ?>';
答案 1 :(得分:1)
首先,您所拥有的json字符串无效。您可以在线免费检查以验证json。拥有有效的json后,您可以使用JSON.parse()将其转换为JSONObject
答案 2 :(得分: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