python - 隐藏到json pandas python时删除obejct列中的\
问题描述
我有数据框用户
id | user | phone
------------------
1 | chris | {"device": "a", "brand": "a"}
2 | nat | {"device": "a", "brand": "a"}
3 | zack | {"device": "a", "brand": "a"}
然后将其传递给对象变量
rows = df.loc[df['id'] == 1]
merged = {'data': rows.reindex(columns=df.columns.values).to_dict('records')}
with open((path + '/' + filename + '.json'), 'w') as fp:
json.dump(merged, fp)
然后得到 filename.json :
{
"data": {
"id" : 1,
"user" : "chris",
"phone": "{\"device\": \"a\", \"brand\": \"a\"}"
}
}
预期结果:
{
"data": {
"id" : 1,
"user" : "chris",
"phone": {
"device": "a",
"brand": "a"
}
}
}
如何使它达到预期的结果?
解决方案
的内容phone
已经是 JSON。正如您所遇到的,将 JSON 转换为 JSON 将导致引号转义。
解决方案是在转换为 JSON 之前将JSON 字符串转换phone
为dict
第一个 using ) 。json.loads
merged
import json
merged = {
"data": {
"id" : 1,
"user" : "chris",
"phone": "{\"device\": \"a\", \"brand\": \"a\"}"
}
}
merged['data']['phone'] = json.loads(merged['data']['phone'])
print(json.dumps(merged, indent=4))
输出:
{
"data": {
"id": 1,
"user": "chris",
"phone": {
"device": "a",
"brand": "a"
}
}
}
当然,这假定phone
JSON 始终是有效的,否则json.loads
会失败。
推荐阅读
- java - Java JFrame 意外地奇怪地删除组件
- r - 在 Google Colab 中,您如何在 Google Drive 中找到文件的路径。我正在使用 R
- java - 使用 Ridesharing 应用程序请求 RDMS Firebase 分片的高级建议
- javascript - 在Javascript中生成由函数映射返回的两个或多个项目
- c - 计算每个字母在字符串中出现的次数
- python - 在 Pyspark 中解析包含 XML 字符串的列
- c# - 命名空间“系统”中不存在“语音”
- php - 如何使用php获取超过2GB的大文件的哈希值
- c++ - 关于c ++中的内联函数的问题
- python - TKinter columnconfigure 调整大小选项不起作用