如何阅读和理解json文件

时间:2014-06-28 12:32:51

标签: json dynamic getjson

我试图了解谁阅读这种格式的json,但我不能知道它映射到什么

我不知道"号码:号码:'文字'"等于m是对象的数组还是它的确是什么?

我认为我们在对象a:4

处有一些变量
a: 1: {
s: 2: "r1";
a: 4: {
    s: 12: "number_votes";
    i: 2;
    s: 12: "total_points";
    i: 6;
    s: 7: "dec_avg";
    d: 3;
    s: 9: "whole_avg";
    d: 3;
  }
}

希望有人可以让它对我来说可读。 因为它应该使这样的静态结构动态化并从数据库中调用每个值!

我知道json文件的常见结构,如

{"employees":[
     {"firstName":"Mustafa", "lastName":"Elnagar"}, 

]}

1 个答案:

答案 0 :(得分:3)

该代码段不是JSON,而是由PHP使用serialize()序列化的对象或数组。

首先,让我们解码它。请注意,序列化字符串不应该有任何空格,因为它会破坏反序列化:

<?php
$serialized = 'a:1:{s:2:"r1";a:4:{s:12:"number_votes";i:2;s:12:"total_points";i:6;s:7:"dec_avg";d:3;s:9:"whole_avg";d:3;}}';

var_dump(unserialize($serialized));

这是我们的输出:

array (size=1)
  'r1' => 
    array (size=4)
      'number_votes' => int 2
      'total_points' => int 6
      'dec_avg' => float 3
      'whole_avg' => float 3

如果您想将上述内容传递回客户端以供您的javascript代码使用,请将其编码为JSON:

<?php
$serialized = 'a:1:{s:2:"r1";a:4:{s:12:"number_votes";i:2;s:12:"total_points";i:6;s:7:"dec_avg";d:3;s:9:"whole_avg";d:3;}}';

$unserialized = unserialize($serialized);

var_dump(json_encode($unserialized, JSON_PRETTY_PRINT));

这会产生有效的JSON:

{
    "r1": {
        "number_votes": 2,
        "total_points": 6,
        "dec_avg": 3,
        "whole_avg": 3
    }
}

您可能希望删除生产中的JSON_PRETTY_PRINT标记,以使JSON更易于阅读。