jsonオブジェクトと文字列、配列間の変換

3035 ワード

jsonオブジェクトと文字列、配列間の変換
JS中:
jsonフォーマット文字列からJsonオブジェクト(stJSONは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_エンコード():
1.1、php配列をjson文字列に変換する
  • インデックス配列
    $arr = Array('one', 'two', 'three');
    echo json_encode($arr);
    
    
    出力
    ["one","two","three"]
    
    
  • 関連配列:
    $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", }';
    
    
    この3つの文字列に対してjson_を実行します.decode()は全部nullに戻ります.エラーがあります.
    一つ目のエラーは、Jsonのセパレータはダブルクォーテーションマークのみ使用できます.シングルクォーテーションマークは使用できません.
    二つ目のエラーは、jsonの名前が正しい「名前」(コロンの左側の部分)で、いずれの場合もダブルクォーテーションを使用しなければなりません.
    三つ目のエラーは、最後の値の後にコンマを付けることができません.
    また、jsonはオブジェクトと配列を表すためにしか使えません.文字列や数値に対してjson(u)を使うとdecode()は、nullに戻ります.
    var_dump(json_decode("Hello World")); //null