根据json.org上面的描述,JSON对象是由对象成员组成,而成员是由key-value键值组成。key值是一个字符串:
字符串由Unicode字符组成,用双引号包围,用反斜杠转义。可以是单个字符。用法跟C或Java里的字符串的用法相似。
但是,在现实应用中,很少有程序员知道JSON里的key需要用双引号包围,因为大多数的浏览器里并不需要使用双引号。所以,为什么多此一举要多写两个双引号呢?
规范的例子:
{ "keyName" : 34 }
不规范的例子:
{ keyName : 34 }
虽然在浏览器里使用不规范的、不使用双引号的写法在浏览器里不会出现问题,但并不代表你可以在其它地方不会遇到问题,比如,你有一个字符串:
//字符串格式 '{ keyName : 34 }'
你想把它转换成JSON对象。把JSON字符串转换成JSON对象,需要使用 JSON.parse()
方法,对于上面的这种key名上不带双引号的的JSON字符串,使用JSON.parse()
解析时会报错,无法解析。这就成了一个很麻烦的问题。所以说,尽量使用规范的预防还是有好处的,尽管大多数时候你不会遇到问题。
那么,对于key名不带双引号的JSON字符串,如何将它转换成JSON对象呢?
最直接的方法是手工给key名加上双引号。
如果你不像手工添加,可以使用函数全文搜索追加双引号,比如下面的这段代码:
json_string.replace(/(s*?{s*?|s*?,s*?)(['"])?([a-zA-Z0-9]+)(['"])?:/g, '$1"$3":'); eval('var json = new Object(' + json_string + ')');
最后,最简单的一种方法是直接用eval()
运行它:
var obj = eval('(' + invalid_json + ')');
但这样执行时,你需要理解执行的代码是什么,因为如果它里面含有一些恶意程序,你这样直接运行很可能引起安全问题。
相关推荐
一个JSON对象以大括号`{}`包围,其内部由键值对组成,键用双引号`""`包裹,值可以是字符串、数字、布尔值、数组、null或另一个JSON对象。数组则用方括号`[]`表示,元素之间用逗号分隔。 生成JSON字符串通常涉及两个...
使用`aspjson`库,可以创建并填充ASP对象,然后将其转换为JSON字符串输出。例如: ```vbscript Dim jsonObj, arr Set jsonObj = New ASPJSON Set arr = jsonObj.CreateObject("Array") arr.Add "Item1" arr....
1. **JSON基本结构**:JSON数据由键值对组成,键用双引号包围,值可以是字符串、数字、布尔值、数组、对象或null。例如:`{"name": "John", "age": 30, "isStudent": false}`。 2. **C++ JSON库**:C++中常用的JSON...
然而,在某些情况下,我们可能会遇到不规范的JSON字符串,即其中的key没有使用双引号。直接使用PHP内置的json_decode函数解析这样的字符串会导致失败。 为了解决这个问题,我们可以编写一个自定义的函数,这个函数...
处理方案通常包括编写一个自定义的方法来遍历JSON字符串,并将多余的双引号替换为合适的字符,从而修正JSON字符串格式。例如,将多余的双引号替换为中文双引号“””,这样就避免了标准JSON解析器的报错。在提供的...
2. 键与值的规则:键是字符串,必须用双引号括起来,而值可以是字符串、数字、布尔值、数组、null或另一个JSON对象。例如: ``` "key": "value" ``` 3. 对象的键值对之间用逗号分隔,但最后一个键值对后面不能有...
类似于`Integer`、`Float`、`Boolean`等基本类型的对象,可以直接将其值包裹在双引号中,形成JSON的字符串形式。例如,`Integer`类型的值123会被转换为`"123"`。 2. **数组转换**: 对于数组,`array2json()`方法...
在JavaScript中,经常需要将JSON字符串转换为JSON对象,以便能够操作和处理这些数据。然而,在这个过程中,可能会遇到一些转义问题,特别是在涉及到特殊字符时。本文将深入探讨JavaScript中JSON字符串到JSON对象的...
JSON由键值对组成,键(key)是字符串,用双引号括起,值(value)可以是字符串、数字、布尔值、数组、对象或null,所有键值对都用逗号分隔。例如: ```json { "name": "John", "age": 30, "city": "New York" }...
JSON由键值对(key-value pairs)组成,键用双引号包围,值可以是字符串、数字、布尔值、数组、null或另一个JSON对象。例如: ```json { "name": "John", "age": 30, "city": "New York" } ``` 2. **Python...
如果JSON字符串不符合上述规则,比如使用了单引号代替双引号,或者对象的属性没有用双引号包围,例如{test:1}或{'test':1},这些都会被认作是格式错误的JSON字符串,使用jQuery.parseJSON解析时会导致异常。...
在JavaScript中,`JSON.parse()`方法可以将一个JSON字符串转换为JavaScript对象,而`JSON.stringify()`方法则可以将JavaScript对象转换为JSON字符串。 在实际应用中,JSON字符串常用于服务器向客户端发送数据,或者...
标准的JSON规范要求键(key)必须使用双引号括起,并且大小写敏感。然而,有时我们可能遇到JSON字符串的键首字母大写的情况,这与Java中的驼峰命名规则不一致,导致反序列化时出现匹配问题。标题“Json转对象忽略大...
在上述代码中,`JSON.parse()` 将带有双引号的JSON格式字符串转换为JavaScript对象。 ### HTML实体编码与解码 在处理HTML内容时,有时我们需要对特殊字符进行转义,防止它们被浏览器当作HTML标签解析。`escape...
1. `JSON.parse()`:将JSON字符串转换为JavaScript对象。例如: ```javascript var jsonString = '{"name":"John", "age":30, "city":"New York"}'; var jsonObject = JSON.parse(jsonString); ``` 2. `JSON....
1. **JSON对象转字符串**:在JavaScript中,你可以通过`JSON.stringify()`方法将一个JavaScript对象转换为JSON字符串。例如: ```javascript var obj = {"name": "Mike", "sex": "女", "age": 29}; var json...
1. **语法差异**:JSON字符串中的键名必须用双引号包裹,而Python字符串中的键名可以用单引号或双引号。例如,在JSON字符串中,“key”必须写成`"key"`;而在Python中,`'key'`和`"key"`都是合法的。 2. **数据结构...
- 将JavaScript对象转换为JSON字符串:使用`JSON.stringify()`方法,可以将JavaScript对象转换成JSON格式的字符串,方便在网络间传输。 3. JSON数据可视化: - JSON数据可视化工具可以帮助开发者更直观地理解复杂...
将`DataSet`转换成JSON的过程主要是遍历`DataSet`中的每个`DataTable`,然后将每一行数据转换成JSON格式的对象,并将这些对象组合成一个大的JSON字符串。 #### 2.2 示例代码分析 下面是对给定代码片段的详细分析: ...