繁体   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