JSON: JavaScript Object Notation (JavaScript Object Notation)。実際、JSON は単なる JavaScript オブジェクト (Object) です。
jsonオブジェクト
コードは以下のように表示されます。
var json = {aa:true,bb:true};
var json1 = {aa:'b',bb:{cc:true,dd:true}};
1: js は json オブジェクトを操作します
コードは以下のように表示されます。
for(var item in json){
alert(item); //结果是 aa,bb, 类型是 string
alert(typeof(item));
alert(eval("json."+item)); //结果是true,true类型是boolean
eval(("json."+item+"=false;")); //改变json对象的值
}
2: jsonオブジェクトをStringオブジェクトに変換する方法
コードは以下のように表示されます。
/**
* json对象转字符串形式
*/
function json2str(o) {
var arr = [];
var fmt = function(s) {
if (typeof s == 'object' && s != null) return json2str(s);
return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s;
}
for (var i in o) arr.push("'" + i + "':" + fmt(o[i]));
return '{' + arr.join(',') + '}';
}
3: 文字列オブジェクトはjsonオブジェクトに変換されます
コードは以下のように表示されます。
function stringToJson(stringValue)
{
eval("var theJsonValue = "+stringValue);
return theJsonValue;
}
4: json配列をStringオブジェクトに変換するメソッド(上記メソッドを削除したい場合)
コードは以下のように表示されます。
function JsonArrayToStringCfz(jsonArray)
var JsonArrayString = "[";
for(var i=0;i<jsonArray.length;i++){
JsonArrayString=JsonArrayString+JsonToStringCfz(jsonArray[i])+",";
}
JsonArrayString = JsonArrayString.substring(0,JsonArrayString.length-1)+"]";
return JsonArrayString;
}
5: json.js json を使用して文字列化する
コードは以下のように表示されます。
<script src="json2.js"></script>
<script>
var date = {myArr : ["a" , "b" , "c" , "d"] , count : 4};
var str = JSON.stringify(date);
alert(str);
</script>
JavaScriptで新しい文字列(JSONテキスト)を作成します。
var txt = '{ "employees" : [' +
'{ "firstName":"Bill" , "lastName":"Gates" },' +
'{ "firstName":"George" , "lastName":"Bush" },' +
'{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
JSON 構文は JavaScript 構文のサブセットであるため、JavaScript 関数 eval() を使用して JSON テキストを JavaScript オブジェクトに変換できます。
eval() 関数は、JSON テキストを解析して JavaScript オブジェクトを生成する JavaScript コンパイラーを使用します。構文エラーを避けるために、テキストはかっこで囲む必要があります。
var obj = eval ("(" + txt + ")");
注: eval() 関数は、JavaScript コードをコンパイルして実行します。これにより、潜在的なセキュリティ問題が隠蔽されます。
JSON パーサーを使用して JSON を JavaScript オブジェクトに変換する方が安全です。JSON パーサーは JSON テキストのみを理解し、スクリプトをコンパイルしません。
ブラウザーでは、これによりネイティブ JSON サポートと高速な JSON パーサーが提供されます。
新しいブラウザーと最新の ECMAScript (JavaScript) 標準には、JSON のネイティブ サポートが含まれています。
文字列を JSON オブジェクトに変換: JSON.parse(jsonstr);
json オブジェクトから json 文字列へ: JSON.stringify(jsonObj);
JQueryメソッド:
json 文字列から json オブジェクトへ: jQuery.parseJSON(jsonStr);
<html>
<body>
<h2>通过 JSON 字符串来创建对象</h3>
<p>
First Name: <span id="fname"></span><br />
Last Name: <span id="lname"></span><br />
</p>
<script type="text/javascript">
var txt = '{"employees":[' +
'{"firstName":"Bill","lastName":"Gates" },' +
'{"firstName":"George","lastName":"Bush" },' +
'{"firstName":"Thomas","lastName":"Carter" }]}';
obj = JSON.parse(txt);
document.getElementById("fname").innerHTML=obj.employees[1].firstName
document.getElementById("lname").innerHTML=obj.employees[1].lastName
</script>
</body>
</html>
では、json 配列を反復処理するにはどうすればよいでしょうか? 通常の JavaScript オブジェクトとして扱うことができます。
<html>
<body>
<h2>如何遍历JSON数组</h3>
<div id="result"></div>
<script type="text/javascript">
var txt = '[{"firstName":"Bill","lastName":"Gates" },' +
'{"firstName":"George","lastName":"Bush" },' +
'{"firstName":"Thomas","lastName":"Carter" }]';
var arrayJson = JSON.parse(txt);
var html='';
for(var p in arrayJson){
html+=' firstName:'+arrayJson[p].firstName;
html+=' lastName'+arrayJson[p].lastName;
html+='<br />';
}
document.getElementById("result").innerHTML= html;
</script>
</body>
</html>
ie8 (互換モード)、ie7 および ie6 には JSON オブジェクトがありませんが、http://www.json.org/js.htmlには json.js が提供されているため、ie8 (互換モード)、ie7 および ie6 は JSON オブジェクトをサポートできます。その stringify() メソッドと parse() メソッド; この js は https://github.com/douglascrockford/JSON-js で入手できますが、現在は一般的に json2.js を使用します。
ie8 (互換モード)、ie7 および ie6 は eval() を使用して文字列を JSON オブジェクトに変換できます。
var c='{"name":"Mike","sex":"女","age":"29"}';
var cToObj=eval("("+c+")");
alert(typeof(cToObj));