js语法---json和object的转换

什么是 JSON 

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
  • JSON 具有自我描述性,更易理解。

        json本质上是一串长字符(一串有结构的字符串),在网络中,2进制数据是数据传输的主体,而字符串可以很容易的转换成2进制数据,所以json文件可以大量快速的在网络中传输数据。

JSON.stringify

JSON.stringify 的完整语法:


let json = JSON.stringify(value[, replacer, space])
value
要编码的值。
replacer
要编码的属性数组或映射函数 function(key, value)。
space
用于格式化的空格数量。

大部分情况,JSON.stringify 仅与第一个参数使用

let obj = {
    name : "Tom",
    age : 18,
    user :{
        type : "object"
    }
}
// 转换一个对象
let json = JSON.stringify(obj);
console.log(json);

可以看到obj对象直接转换成了一串字符

console.log(JSON.stringify(obj,["name"]));

第二个参数指定了name属性,最后只json化了那么属性

console.log(JSON.stringify(obj,["name","user"]));

对于嵌套的对象,内部对象的属性也需要指定属性才能json化

console.log(JSON.stringify(obj,["name","age","user","type"]));

        可以看到全部指定后和第一个打印结果一致,但是以上的结果都是一串长字符,结构并不清晰,所以这里用到第三个参数replace(空格数)格式化美化json

console.log(JSON.stringify(obj,null,2));

可以看到结果直接展开,便于理解。

JSON.parse

let value = JSON.parse(str, [reviver]);
str
要解析的 JSON 字符串。
reviver
可选的函数 function(key,value),遍历一遍json内的所有键值对,并返回要解析的键值
console.log(JSON.parse(json));
console.log(JSON.parse(json,function(key,value){
    //console.log(key,":",value);
    if(key == "age"){
        console.log(value);
    }
    return value; // 必须返回value值,否则无法解析json
}));

可以看到解析成了对象,且可以对每个值进行单独操作 

总结

  • JSON 是一种数据格式,具有自己的独立标准和大多数编程语言的库。
  • JSON 支持 object,array,string,number,boolean 和 null
  • JavaScript 提供序列化(serialize)成 JSON 的方法 JSON.stringify 和解析 JSON 的方法 JSON.parse
  • 这两种方法都支持用于智能读/写的转换函数。
  • 如果一个对象具有 toJSON,那么它会被 JSON.stringify 调用。

完整代码和结果

let obj = {
    name : "Tom",
    age : 18,
    user :{
        type : "object"
    }
}
// 转换一个对象
let json = JSON.stringify(obj);
console.log(json);

console.log(JSON.stringify(obj,["name"]));
console.log(JSON.stringify(obj,["name","user"]));
console.log(JSON.stringify(obj,["name","age","user","type"]));

console.log(JSON.stringify(obj,null,2));

console.log(JSON.parse(json));
console.log(JSON.parse(json,function(key,value){
    //console.log(key,":",value);
    if(key == "age"){
        console.log(value);
    }
    return value;// 必须返回value值,否则无法解析json
}));

更多内容可以参考:

JSON 方法,toJSON (javascript.info)

JSON.stringify() - JavaScript | MDN (mozilla.org)

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Python 的 json 模块将字符串转换JSON 对象。例如: ``` import json string = '{"key": "value"}' json_obj = json.loads(string) print(json_obj) # 输出: {"key": "value"} print(type(json_obj)) # 输出: <class 'dict'> ``` 或者,也可以使用 Python 的 ast 模块将字符串转换JSON 对象。例如: ``` import ast string = '{"key": "value"}' json_obj = ast.literal_eval(string) print(json_obj) # 输出: {"key": "value"} print(type(json_obj)) # 输出: <class 'dict'> ``` 需要注意的是,使用 ast.literal_eval() 转换字符串时,字符串必须符合 Python 语法的规范,否则会抛出 SyntaxError 异常。 ### 回答2: 消息队列是一种用于消息传递的中间件。在使用消息队列时,可以发送不同类型的消息体,其中包括字符串类型的消息体。而将字符串消息体转换JSON格式可以有以下步骤: 1. 首先,我们需要引入JSON解析库,比如在Python中可以使用json模块。 2. 将字符串的消息体解析为JSON对象。使用JSON解析库的相关函数,可以将字符串消息体转换JSON对象。这样可以方便地进行操作和访问。 3. 对JSON对象进行相关操作。将字符串转换JSON之后,可以对其进行修改、添加、删除等操作。也可以通过JSON对象获取其中的字段信息。 4. 如果需要将JSON对象转换回字符串,可以使用JSON解析库提供的相关函数。 总之,通过使用JSON解析库,我们可以将消息队列中的字符串消息体转换JSON格式,从而方便地进行操作和处理。这样可以更好地利用消息队列来进行消息传递和数据交换。 ### 回答3: 消息队列中的消息体一般是以字符串(string)的形式存储和传输的。如果我们需要将消息体转换JSON(JavaScript Object Notation),即将字符串转换JSON 格式的对象。 首先,我们需要使用合适的编程语言来进行转换操作,比如使用 Python 中的 json 模块。假设我们已经将消息体以字符串的形式接收到,并存储在变量中。以下是一个示例代码: ```python import json message_str = '{"name": "Alice", "age": 30, "city": "New York"}' # 假设消息体以字符串形式存在 try: message_obj = json.loads(message_str) # 使用json模块的loads函数将字符串转换JSON对象 print(message_obj) # 输出转换后的JSON对象 except json.JSONDecodeError: print("Invalid JSON format!") # 如果字符串格式不符合JSON格式,会捕获异常并输出错误提示信息 ``` 在以上代码中,我们使用 json 模块的 loads 函数将字符串 `message_str` 转换为了 JSON 对象 `message_obj`,并通过打印输出来验证转换的结果。如果字符串格式不符合 JSON 格式,会捕获 JSONDecodeError 异常并输出相应的错误提示信息。 通过这种方式,我们可以方便地将消息队列中的字符串消息体转换JSON 格式的对象,便于后续的数据处理和解析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值