【问题标题】:How to make Javascript object from JSON如何从 JSON 制作 Javascript 对象
【发布时间】:2019-02-04 06:50:52
【问题描述】:

如何将 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\\\"}\"]}"]}"]

例如,我在上面的代码中给出了一个对象,实际上数组是这样的对象列表

[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);
    }

谁能帮帮我?

提前致谢!

【问题讨论】:

  • ["{"title":" 是格式错误的 JSON。尝试改用json_encode
  • 尝试使用 JSON.parse(), var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}') ;
  • 您的 JSON 未经过验证。请从此处验证 JSON:jsonlint.com 并使用 JSON.parsey() 将 JSON 转换为 Object。
  • 你是如何生成这个 JSON 的?
  • 我正在制作 JSON 像这样 return json_encode([$area_list]); @SamiAhmedSiddiqui

标签: javascript php arrays json object


【解决方案1】:

你需要在你的 PHP 中使用json_encode

var arr = '<?php echo json_encode(!empty($treeView) ? $treeView : "[]"); ?>';

【讨论】:

    【解决方案2】:

    首先,你那里的json字符串是无效的。您可以在线免费检查以验证 json。一旦你有一个有效的 json,你可以使用 JSON.parse() 将它转换为 JSONObject

    【讨论】:

      【解决方案3】:
      // 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
      

      【讨论】:

        猜你喜欢
        • 2014-01-10
        • 1970-01-01
        • 2017-09-27
        • 1970-01-01
        • 2021-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-03
        相关资源
        最近更新 更多