JSON数据格式

JSON概念 

JSON用于不同语言之间的数据交换 

 

JSON本质上是一个具有下面形式的字符串

 

        观察JSON数据的两种组织格式,我们看出,跟python 中的“字典”和“字典列表”两个概念其实很接近;区别就是JSON的格式是字符串,Python中分别是dict和list。

        JSON数据转换为python的数据后,类型也顺其自然变成了 Python中分别是dict和list。接下来就可以在python中处理了。

python数据和JSON数据的相互转换方法

python数据和JSON数据的相互转换-代码举例:

"""
演示JSON数据和Python字典的相互转换
"""
import json
# 准备列表,列表内每一个元素都是python的字典,将其转换为JSON
data = [{"name": "张大山", "age": 11}, {"name": "王大锤", "age": 13}, {"name": "赵小虎", "age": 16}]
json_str = json.dumps(data, ensure_ascii=False)
print(type(json_str))
print(json_str)

# 准备字典,将字典转换为JSON
d = {"name":"周杰轮", "addr":"台北"}
json_str = json.dumps(d, ensure_ascii=False)
print(type(json_str))
print(json_str)

# 将JSON字符串转换为Python数据类型[{k: v, k: v}, {k: v, k: v}]
s = '[{"name": "张大山", "age": 11}, {"name": "王大锤", "age": 13}, {"name": "赵小虎", "age": 16}]'
l = json.loads(s)
print(type(l))
print(l)

# 将JSON字符串转换为Python数据类型{k: v, k: v}
s = '{"name": "周杰轮", "addr": "台北"}'
d = json.loads(s)
print(type(d))
print(d)

JSON最常用的场景案例-前后端的数据传输

以下是前端页面和后端C/C++代码之间传输JSON数据的示例:

前端页面代码(使用jQuery):

```javascript
$.ajax({
    url: '/api/data',
    type: 'POST',
    data: JSON.stringify({key1: 'value1', key2: 'value2'}),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function(data) {
        console.log(data);
    },    error: function(xhr, status, error) {
        console.log(error);
    }
});
```

后端C++代码(使用Drogon框架):

```c++
void MyController::getData(const HttpRequestPtr& req,                            std::function<void (const HttpResponsePtr&)>&& callback,                            const std::string& key1,
                            const std::string& key2)
{
    Json::Value json;
    json["key1"] = key1;
    json["key2"] = key2;
    auto resp = HttpResponse::newHttpJsonResponse(json);
    callback(resp);
}
```

        在这个例子中,前端页面使用jQuery的ajax方法向后端发送POST请求,请求的数据是一个JSON对象。后端使用Drogon框架处理请求,将JSON对象转换为JSON字符串并返回给前端。在后端代码中,我们使用了JsonCpp库来处理JSON数据。

总结

参考链接:

第一阶段-第十章-02-JSON数据格式的转换_哔哩哔哩_bilibili 

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值