首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于替换文件中的json模式并与API结果进行比较的Python函数

用于替换文件中的json模式并与API结果进行比较的Python函数
EN

Stack Overflow用户
提问于 2019-11-29 23:45:54
回答 1查看 18关注 0票数 0

我需要在python中创建一个函数来帮助我读取JSON文件,并将结果与从API接收到的JSON进行比较。问题是有些参数总是不同的,比如“Id”或“createdAt”,我希望在文件中使用Json路径,然后将结果与这些信息进行比较。有人能帮我吗?我在这里有一个简单的例子,但在某些情况下,我有100+ itens的JSON,使用Json路径表达式会容易得多。

我从API收到的内容:

代码语言:javascript
代码运行次数:0
运行
复制
{
    "users": [
        {
            "createdAt": "2019-11-28 15:18:32+0000",
            "name": "name1",
            "id": 1,
            "enabled": true,
            "updatedAt": "2019-11-28 15:18:32+0000"
        },
        {
            "createdAt": "2019-11-28 15:18:32+0000",
            "name": "name2",
            "id": 2,
            "enabled": true,
            "updatedAt": "2019-11-28 15:18:32+0000"
        }, 
    ]
}

我想发送一个json文件来比较结果:

代码语言:javascript
代码运行次数:0
运行
复制
{
    "users": [
        {
            "createdAt": "$..roles[0].createdAt",
            "name": "name1",
            "id": 1,
            "enabled": true,
            "updatedAt": "$..roles[0].updatedAt"
        },
        {
            "createdAt": "$..roles[1].createdAt",
            "name": "name2",
            "id": 2,
            "enabled": true,
            "updatedAt": "$..roles[1].updatedAt"
        }, 
    ]
}
EN

回答 1

Stack Overflow用户

发布于 2019-11-29 23:52:36

对不起@ScottHunter,我实际上已经有了json diff函数,但它不会将json路径读取为“变量”,所以我的函数什么也不做。

代码语言:javascript
代码运行次数:0
运行
复制
 def compare(location1, location2):
  json1 = getContent(location1)
  json2 = getContent(location2)
  diff1 = Diff(json1, json2, True).difference
  diff2 = Diff(json2, json1, False).difference
  diffs = []
  for type, message in diff1:
    newType = 'THIS ELEMENT HAS NOT THE SAME VALUE'
    if type == PATH:
      newType = 'REMOVED'
    diffs.append({'type': newType, 'message': message})
  for type, message in diff2:
    diffs.append({'type': 'ADDED', 'message': message})
  return diffs
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59107761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档