これら2つの解析方法をいつ使用するか混乱しています。
私のjson_encodedデータをエコーしてajaxでそれを取り戻した後、私はJSON.stringifyとJSON.parseをいつ使うべきかについて混乱することがよくあります。
私は console.log を解析すると[object,object]
を受け取り、文字列化するとJavaScriptオブジェクトを受け取ります。
$.ajax({
url: "demo_test.txt",
success: function(data) {
console.log(JSON.stringify(data))
/* OR */
console.log(JSON.parse(data))
//this is what I am unsure about?
}
});
JSON.stringify
は、JavaScriptオブジェクトをJSONテキストに変換し、そのJSONテキストを文字列に格納します。
JSON.parse
は、JSONテキストの文字列をJavaScriptオブジェクトに変換します。
JSON.parse()
は、JSONとして受け取ったものを「解析」するためのものです。JSON.stringify()
はオブジェクト/配列からJSON文字列を作成することです。
それらは互いに逆です。 JSON.stringify()
はJSオブジェクトをJSON文字列にシリアル化しますが、JSON.parse()
はJSON文字列をJSオブジェクトに逆シリアル化します。
彼らはお互いの反対です。
JSON.stringify()
JSON.stringify()は、JSオブジェクトをJSON文字列にシリアル化します。
JSON.stringify({}); // '{}'
JSON.stringify(true); // 'true'
JSON.stringify('foo'); // '"foo"'
JSON.stringify([1, 'false', false]); // '[1,"false",false]'
JSON.stringify({ x: 5 }); // '{"x":5}'
JSON.stringify(new Date(2006, 0, 2, 15, 4, 5))
// '"2006-01-02T15:04:05.000Z"'
JSON.stringify({ x: 5, y: 6 });
// '{"x":5,"y":6}' or '{"y":6,"x":5}'
JSON.stringify([new Number(1), new String('false'), new Boolean(false)]);
// '[1,"false",false]'
JSON.parse()
JSON.parse()メソッドは、文字列をJSONとして解析し、オプションで生成された値を変換します。
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null
まず、JSON.stringify()
関数はJavaScriptの値をJavaScript Object Notation(JSON)文字列に変換します。 JSON.parse()
関数は、JavaScript Object Notation(JSON)文字列をオブジェクトに変換します。これら2つの機能の詳細については、以下のリンクを参照してください。
https://msdn.Microsoft.com/library/cc836459(v=vs.94).aspxhttps://msdn.Microsoft.com/library/cc836466(v=vs.94).aspx
次に、次のサンプルはこれら2つの機能を理解するのに役立ちます。
<form id="form1" runat="server">
<div>
<div id="result"></div>
</div>
</form>
<script>
$(function () {
//define a json object
var employee = { "name": "John Johnson", "street": "Oslo West 16", "phone": "555 1234567" };
//use JSON.stringify to convert it to json string
var jsonstring = JSON.stringify(employee);
$("#result").append('<p>json string: ' + jsonstring + '</p>');
//convert json string to json object using JSON.parse function
var jsonobject = JSON.parse(jsonstring);
var info = '<ul><li>Name:' + jsonobject.name + '</li><li>Street:' + jsonobject.street + '</li><li>Phone:' + jsonobject.phone + '</li></ul>';
$("#result").append('<p>json object:</p>');
$("#result").append(info);
});
</script>
var log = { "page": window.location.href,
"item": "item",
"action": "action" };
log = JSON.stringify(log);
console.log(log);
console.log(JSON.parse(log));
//出力は次のようになります。
// 1番目のコンソールの文字列は次のようになります。
'{ "page": window.location.href,"item": "item","action": "action" }'
// 2番目のコンソールは次のようなオブジェクトです。
Object {
page : window.location.href,
item : "item",
action : "action" }
ここでの本当の混乱はparse対stringifyについてではなく、それは成功コールバックのdata
パラメータのデータ型についてです。
data
は、生の応答、つまり文字列、またはドキュメントのJavaScriptオブジェクトにすることができます。
成功
型:Function(すべてのデータ、文字列textStatus、jqXHR jqXHR)要求が成功した場合に呼び出される関数。この関数には3つの引数が渡されます。指定されている場合は、dataTypeパラメータまたはdataFilterコールバック関数に従ってフォーマットされた、サーバーから返されたデータ。<..>
そしてdataTypeはデフォルトで 'intelligent guess'の設定になっています
dataType(デフォルト:Intelligent Guess(xml、json、script、またはhtml))
Type:Stringサーバーから返されることを期待しているデータの種類です。何も指定されていない場合、jQueryは応答のMIMEタイプに基づいて推論しようします(XML MIMEタイプはXMLを生成し、1.4ではJSONはJavaScriptオブジェクトを生成し、1.4スクリプトはスクリプトを実行します)他には文字列として返されます。
JSON.stringify()
オブジェクトを文字列に変換します。
JSON.parse()
JSON文字列をオブジェクトに変換します。
言及されているかどうかはわかりませんが、JSON.parse(JSON.stringify(myObject))の用途の1つは、元のオブジェクトのクローンを作成することです。
元のオブジェクトに影響を与えずにデータを台無しにしたいときに便利です。おそらく最もクリーンで速い方法ではありませんが、それほど複雑ではないオブジェクトに対しては最も簡単な方法です。
それらは互いに完全に反対です。
JSON.parse()
は構文解析に使用されます _ json _ ; it シリアライズ解除 a JSON文字列 をa JavaScriptオブジェクト 。
一方、 JSON.stringify()
は、 object または array から JSON文字列 を作成するために使用されます。 it シリアライズ a JavaScriptオブジェクト をa JSON文字列 にします。
JSON.stringify() <-> JSON.parse()
JSON.stringify(obj) - 直列化可能オブジェクトを受け取り、JSON表現を文字列として返します。
JSON.stringify() -> Object To String.
JSON.parse(string) - 整形式のJSON文字列を受け取り、対応するJavaScriptオブジェクトを返します。
JSON.parse() -> String To Object.
説明: JSON.stringify(obj [、replacement [、space]]);
Replacer/Space - オプションまたは整数値をとるか、整数型の戻り関数を呼び出すことができます。
function replacer(key, value) {
if (typeof value === 'number' && !isFinite(value)) {
return String(value);
}
return value;
}
彼らは互いに反対しています。 JSON.Stringify()
はJSONを文字列に変換し、JSON.Parse()
は文字列をJSONに解析します。
JSON.stringify(obj [, replacer [, space]])
- 直列化可能オブジェクトを受け取り、JSON表現を文字列として返します。
JSON.parse(string)
- 整形式のJSON文字列を受け取り、対応するJavaScriptオブジェクトを返します。
JSON:主にサーバーとの間でデータを交換するために使用されます。 JSONオブジェクトをサーバーに送信する前に、それは文字列でなければなりません。
JSON.stringify() //Converts the JSON object into the string representation.
var jsonData={"Name":"ABC","Dept":"Software"};// It is a JSON object
var jsonString=JSON.stringify(jsonData);// It is a string representation of the object
// jsonString === '{"Name":"ABC","Dept":"Software"}'; is true
また、Javascript配列を文字列に変換します。
var arrayObject=["ABC","Software"];// It is array object
var arrString=JSON.stringify(array);// It is string representation of the array (object)
// arrString === '["ABC","Software"]'; is true
サーバーからJSONデータを受信したとき、データは文字列フォーマットになります。次に、文字列をJSONオブジェクトに変換します。
JSON.parse() //To convert the string into JSON object.
var data='{ "name":"ABC", "Dept":"Software"}'// it is a string (even though it looks like an object)
var JsonData= JSON.parse(data);// It is a JSON Object representation of the string.
// JsonData === { "name":"ABC", "Dept":"Software"}; is true
JSON.parse()
は、StringをObjectに変換するために使用されます。JSON.stringify()
は、ObjectをStringに変換するために使用されます。
あなたもこれを参照することができます...
<script type="text/javascript">
function ajax_get_json(){
var hr = new XMLHttpRequest();
hr.open("GET", "JSON/mylist.json", true);
hr.setRequestHeader("Content-type", "application/json",true);
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
/* var return_data = hr.responseText; */
var data=JSON.parse(hr.responseText);
var status=document.getElementById("status");
status.innerHTML = "";
/* status.innerHTML=data.u1.country; */
for(var obj in data)
{
status.innerHTML+=data[obj].uname+" is in "+data[obj].country+"<br/>";
}
}
}
hr.send(null);
status.innerHTML = "requesting...";
}
</script>
JSON.parse() はJSON文字列を受け取り、それをJavaScriptオブジェクトに変換します。
JSON.stringify() はJavaScriptオブジェクトを受け取り、それをJSON文字列に変換します。
const myObj = {
name: 'bipon',
age: 25,
favoriteFood: 'fish curry'
};
const myObjStr = JSON.stringify(myObj);
console.log(myObjStr);
// "{"name":"bipon","age":26,"favoriteFood":"fish curry"}"
console.log(JSON.parse(myObjStr));
// Object {name:"bipon",age:26,favoriteFood:"fish curry"}
const myArr = ['simon', 'gomez', 'john'];
const myArrStr = JSON.stringify(myArr);
console.log(myArrStr);
// "["simon","gomez","john"]"
console.log(JSON.parse(myArrStr));
// ["simon","gomez","john"]