代码之家  ›  专栏  ›  技术社区  ›  Jay Patel

正在尝试解析此json文件并将其存储在php中

  •  0
  • Jay Patel  · 技术社区  · 7 年前

    我试图解析这个json文件,但无法将其存储为php中的数组。我在访问json文件的对象时遇到了一个问题,因为我得到了一个“非法字符串偏移量‘name’错误”。

    我的代码如下:

    这是我的json:

    "{\"Data\":[{\"id\":21,\"name\":\"Parle G\",\"item_code\":\"PG4\"},{\"id\":22,\"name\":\"Dark Fentasy\",\"item_code\":\"DF\"}]}"
    

    这里是我试图读取文件的地方,但我无法访问对象

    <?php
    
    // Read JSON file
    $json = file_get_contents('results.json');
    
    //Decode JSON
    $json_data = json_decode($json);
    
     //print_r($json_data);
    
    echo $json_data[0]['name'];
    
    ?>
    

    有谁能帮我渡过难关吗?

    3 回复  |  直到 7 年前
        1
  •  2
  •   DicBrus    7 年前

    你需要使用:

    $json_data = json_decode($json, true);
    

    将json转换为关联数组

    然后尝试:

    echo $json_data['Data'][0]['name'];
    
        2
  •  0
  •   Harsh Madaiyar    7 年前
    <?php
    
    // Read JSON file
    $json = file_get_contents('http://192.168.1.100:8080/demo_phonegap/webservices/result.json');
    
    //Decode JSON
    $json_data = json_decode($json, true);
    
    
    
        echo json_encode($json_data);
    
    
    
    ?>
    

    这里需要设置JSON文件的完整路径以读取JSON文件。 并使用$json\u data=json\u decode($json,true);解码JSON文件。

    希望这对你有帮助。

        3
  •  -1
  •   v4d    7 年前

    如果要将其用作数组,必须将其强制转换为:

    $json_data = (array) json_decode($json);
    

    这将把JSON中的所有字段放入PHP数组:

    Array ( [Data] => Array ( [0] => stdClass Object ( [id] => 21 [name] => Parle G [item_code] => PG4 ) [1] => stdClass Object ( [id] => 22 [name] => Dark Fentasy [item_code] => DF ) ) )
    

    Alternativ您可以将数据强制转换为对象,因此您必须访问如下字段 $json_data->Data[0]->name

    $json_data = (object) json_decode($json);
    

    在中阅读更多信息 json_decode 文件: http://php.net/manual/en/function.json-decode.php