JavaScriptにおけるjsonオブジェクトとstringオブジェクトの相互変換

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)); 

おすすめ

転載: blog.csdn.net/cdming/article/details/130314119