首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断字符串是字符串的JSON对象

问如何判断字符串是字符串的JSON对象
EN

Stack Overflow用户
提问于 2011-11-21 00:24:00
回答 4查看 2.7K关注 0票数 5

对于任何有兴趣的人来说,我最终在这里构建了一个“带呼气的本地存储”脚本,

我正在做的事情:为存储构建一个扩展,以便用户可以这样做:

代码语言:javascript
复制
localStorage.setThing(key, value)

用户可以执行以下操作:

代码语言:javascript
复制
localStorage.setThing("key1", 1)
localStorage.setThing("key2", "this is a string")
localStorage.setThing("key3", { prop1: "this is a json obj" })

在我的setThing方法中,我正在检查类型的值,如果是typeof value == "object",则将其存储为localStorage.setItem(key, JSON.stringify(value))

在getThing方法中,我知道使其成为localStorage的值总是一个字符串。那我该怎么做呢?

代码语言:javascript
复制
var val = localStorage.getItem("key3")
if (val is a previously JSON.stringify'd object) // <-- ??
    return JSON.parse(val)

我是否需要对val执行regex检查,如果需要,是否有现成的模式可以告诉我字符串是否真的是JSON.strgify‘d对象?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-21 00:29:52

另一个选项是存储对象{isJsonObj:true, jsonObj: jsonObj},并检查类型为Object,isJsonObj为true。如果其中任何一个都是假的,那么它就不是json (这意味着您不必解析)。我意识到这意味着你不会总是有一个字符串在那里,但它使它很容易测试,不会携带大量的开销。

票数 2
EN

Stack Overflow用户

发布于 2011-11-21 00:29:23

判断字符串是否为JSON的通常方法是通过JSON解码器运行它。如果它成功了,它就是JSON :-)这里不需要正则表达式。

票数 3
EN

Stack Overflow用户

发布于 2011-11-21 00:28:23

你这样做需要什么样的速度?如果这不是一个大问题,您可以一直尝试解析/解码val,如果它失败了,那么它就不是JSON对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8205993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档