美文网首页
json对象与字符串、数组之间的转换

json对象与字符串、数组之间的转换

作者: 景岳 | 来源:发表于2018-07-28 10:33 被阅读15次

    json对象与字符串、数组之间的转换

    JS中:

    json格式字符串转json对象(strJSON代表json字符串)

    var obj = eval(strJSON); 
    
    var obj = strJSON.parseJSON(); 
    
    var obj = JSON.parse(strJSON); 
    
    

    json对象转json格式字符串(obj代表json对象)

    var str = obj.toJSONString(); //必须要引入json.js包、局限性都比较大
    var str = JSON.stringify(obj) 
    
    

    运用时候需要除了eval()以外,其他的都需要引入json.js包,切记!!!

    PHP中:

    1、json_encode():

    1.1、将php数组转换为json字符串

    1. 索引数组

      $arr = Array('one', 'two', 'three');
      echo json_encode($arr);
      
      

      输出

      ["one","two","three"]
      
      
    2. 关联数组:

      $arr = Array('1'=>'one', '2'=>'two', '3'=>'three');
      echo json_encode($arr);
      
      

      输出变为

      {"1":"one","2":"two","3":"three"}
      
      

    1.2、将php类转换为json字符串

    class Foo {
         const     ERROR_CODE = '404';
         public    $public_ex = 'this is public';
         private   $private_ex = 'this is private!';
       protected $protected_ex = 'this should be protected';
         public function getErrorCode() {
                return self::ERROR_CODE;
         }
    }
    
    

    现在,对这个类的实例进行json转换:

    $foo = new Foo;
    
    $foo_json = json_encode($foo);
    
    echo $foo_json;
    
    

    输出结果是

    {"public_ex":"this is public"}
    
    

    2、json_decode():
    将json文本转换为相应的PHP数据结构

    2.1、通常情况下,json_decode()总是返回一个PHP对象,而不是数组比如:

    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
    var_dump(json_decode($json));
    
    

    结果就是生成一个PHP对象:

    object(stdClass)#1 (5) {
         ["a"] => int(1) 
         ["b"] => int(2)
         ["c"] => int(3)
         ["d"] => int(4) 
         ["e"] => int(5)
     }
    
    

    2.2、如果想要强制生成PHP关联数组,json_decode()需要加一个参数true:

    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
    var_dump(json_decode($json,true));
    
    

    结果就生成了一个关联数组:

    array(5) {
        ["a"] => int(1)
        ["b"] => int(2)
        ["c"] => int(3)
        ["d"] => int(4)
        ["e"] => int(5)
    }
    
    

    3、json_decode()的常见错误

    下面三种json写法都是错的

    $bad_json = "{ 'bar': 'baz' }";
    
    $bad_json = '{ bar: "baz" }';
    
    $bad_json = '{ "bar": "baz", }';
    
    

    对这三个字符串执行json_decode()都将返回null,并且报错。

    第一个的错误是,json的分隔符(delimiter)只允许使用双引号,不能使用单引号。

    第二个的错误是,json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号。

    第三个的错误是,最后一个值之后不能添加逗号(trailing comma)。

    另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。

    var_dump(json_decode("Hello World")); //null
    

    相关文章

      网友评论

          本文标题:json对象与字符串、数组之间的转换

          本文链接:https://www.haomeiwen.com/subject/cqxomftx.html