簡體   English   中英

如何將JSON字符串轉換為JavaScript對象,包括類型檢查

[英]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

json2.js描述了json2.js

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM