[英]How to convert a JSON string into a JavaScript Object including type checking
對於Javascript項目,我將json字符串轉換為Javascript對象。 但是我所有值的類型都是JSON解析的“字符串”。
有什么解決方案可以識別類型並將腳本轉換為正確的javascript類型?
例如
//Javascript object for the json decoded string
var jsonObj = { id: "foo", count: "1" };
所有的值都是'string'類型的,但我希望count被視為一個數字。 是否有解析器來設置正確的類型,或者它需要在JS中手動完成?
您可以將reviver與JSON.parse
。
JSON.parse(text, reviver)
可選的齊磊參數是可以過濾和轉換結果的函數。 它接收每個鍵和值,並使用其返回值代替原始值。 如果返回所收到的內容,則不會修改結構。 如果返回undefined,則刪除該成員。
因此要將計數轉換為數字,您可能會做
JSON.parse(myJsonString, function (key, value) {
return key === "count" ? +value : value;
});
所以
JSON.stringify(JSON.parse('{ "id": "foo", "count": "3" }', function (key, value) {
return key === "count" ? +value : value;
}));
產生
{"id":"foo","count":3}
編輯
要同時處理日期,您可以
JSON.parse(myJsonString, function (key, value) {
// Don't muck with null, objects or arrays.
if ("object" === typeof value) { return value; }
if (key === "count") { return +value; }
// Unpack keys like "expirationDate" whose value is represented as millis since epoch.
if (/date$/i.test(key)) { return new Date(+value); }
// Any other rules can go here.
return value;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.