添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

最近在解析json时发现value部分引入了不少额外的双引号和转义引号,具体如下:

"test_str":"{\"created_time\": \"Fri_Aug_08 11:04:40 +0000 2014\"}"

下面解释下如何在存储和读取json文件时避免这种情况。

一、如何在存储时避免
存储这里如果能规避掉,就可以让解析的同学解析更加方便。
因为是存储时写入了双重编码JSON字符串,所以才会出现这种情况。
所以写入文件时检查一下是否进行了多次编码。

>>> import json
>>> not_encoded = {"created_at":"Fri Aug 08 11:04:40 +0000 2014"}
>>> encoded_data = json.dumps(not_encoded)
>>> print encoded_data
{"created_at": "Fri Aug 08 11:04:40 +0000 2014"}
>>> double_encode = json.dumps(encoded_data)
>>> print(double_encode)
"{\"created_at\": \"Fri Aug 08 11:04:40 +0000 2014\"}"

一、如何在解析时避免
调用第三方库demjson,记得先安装库python -m pip install demjson

>>> import demjson
>>> test = r'"{\"created_time\": \"Fri_Aug_08 11:04:40 +0000 2014\"}"'
>>> json_str = demjson.decode(test)
>>> json_str
'{"created_time": "Fri_Aug_08 11:04:40 +0000 2014"}'
>>> json_content = json.loads(json_str)
>>> json_content["created_time"]
'Fri_Aug_08 11:04:40 +0000 2014'
                                    python传到前端的数据,双引号转义的问题python部分def mallTemplateConfig(request):gameRole_edit = request.session.get('gameRole_edit', []) #获取json串return render(request, "operationGL/mallTemplateConfig.html",{'gameRole_...
json转换成字符串的话
那么,如果你要将它转换成字符串,也许你用的是str({"a":15}),这样转出来的,可能是是s= "{'a':'15'}",也就是说,里面的kv是单引号的。这个字符串,传到其他地方,再用json.loads(s)的候会出错,json不支持单引号。
所以,假如你想把一个json结构,转成字符串,传递给远处,然后再重新解析成json结构,应该这样:
s = json.dumps({"a":15})
                                    My code is as followsforeach($location_total_n_4 as $u=> $v) {$final_location_total_4 .= "[".$u.",".$v."],";}I'm sending these values as JSON.echo json_encode(array("location"=>"$final_location_...
a = '{"地区": "湖南", "描述": "精通软件开发、"数据挖掘"和分布式"}'
由于读取出的json字符串中包含有非法双引号,在使用json.loads()处理的候报错 
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 29 (char 28) 
写了大半个小...
                                    先把双引号改成中文的
参考:https://blog.csdn.net/weixin_39198406/article/details/81709397?utm_source=blogxgwz5
用在我的代码里没起作用,发现是我的json格式有问题,比如 data1:{} 这里的data1里面应该是一个单独的json 但是我的json的格式是: data1:"{}" 其中{}用双引号括起来了...
                                    2.3.字典类型的json字符串中的key要用双引号,而不能用单引号json字符串是字典变量类型的字符串的候,对应字典中的key部分,注意是用双引号括起来,而不能是单引号,否则也是会导致json.loads出错的。比如对于字符串变量timeFillingInfoJson:{'2012' : {"month" : [0,0,0,0,0,0,0,-1,-1,-1,-1,-1],"totalCoun...
                                    这正是你应该期待的,我不知道为什么它不是你想要的。记住,print命令返回一个变量的表示,例如print('\"')给出{}。在通过您的示例,您可以看到在输出结果如何将转义字符取回:import jsona = r"""{"version": 1,"query": "occasionally I \"need\" to escape \"double\" quotes"}"""j = json....
request_content = [
{“content” : “问题描述” , “category” : “问题”} ,
{“content” : “今天天气多少度?” , “category” : “问题”}
想要得到request给后台的结果。request的方法使用requests.request(url, header=header, data=request...
         for (int i = 0; i < strjson.length(); i++)
             char c = strjson.toCharArray()[i]; //转换为字节数组
             switch (c)
import com.alibaba.fastjson.JSON;
List<Subject> subjectList = JSON.parseArray(project.getSubjectStr(), Subject.class);
2.数据里面包含的双引号会导致转换失败
3.进行转义的的方法
 public static String formatErrorJson(String s) {