jsonオブジェクトと文字列、配列間の変換
3035 ワード
jsonオブジェクトと文字列、配列間の変換
JS中:
jsonフォーマット文字列からJsonオブジェクト(stJSONはJson文字列を表します.)
PHP中:
1、Json_エンコード():
1.1、php配列をjson文字列に変換するインデックス配列 関連配列: になります.
1.2、php類をjson文字列に変換する
2.1、通常の場合、Json_decode()は常にPHPオブジェクトを返します.配列ではなく、たとえば:
次の三つのjsonの書き方は全部間違っています.
一つ目のエラーは、Jsonのセパレータはダブルクォーテーションマークのみ使用できます.シングルクォーテーションマークは使用できません.
二つ目のエラーは、jsonの名前が正しい「名前」(コロンの左側の部分)で、いずれの場合もダブルクォーテーションを使用しなければなりません.
三つ目のエラーは、最後の値の後にコンマを付けることができません.
また、jsonはオブジェクトと配列を表すためにしか使えません.文字列や数値に対してjson(u)を使うとdecode()は、nullに戻ります.
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