当前位置: 首页 > 知识库问答 >
问题:

如何在Python中正确比较2个JSON请求响应字符串

莫英卓
2023-03-14

我想比较2个Python响应字符串并打印出差异,这是我现在的代码:

导入请求导入json导入时间

getFirst=requests.get("https://api-mainnet.magiceden.dev/v2/collections?offset=0

true: get=requests.get("https://api-mainnet.magiceden.dev/v2/collections?offset=0

if get.status_code == 200:
    print("ok")
if dataPretty != data:
    for item in data:
        if str(item) not in liveRN:
            send = 1
            print(f"Found difference: {item}")

            symbol = item['symbol']
            img = item['image']
            name = item['name']
            description = item['description']

            print(symbol)
            print(img)
            print(name)
                         
        else:
            print("Didnt find")
else:
    print("No change")

time.sleep(15)

我只想在两个重复不匹配时打印项目,但现在它可以打印我想要的项目,即使字符串确实匹配。

我试图看到添加另一个if条件,如果2请求响应匹配,它不会做任何事情,只是通过,但那不起作用

共有1个答案

袁卓
2023-03-14

您可以使用set来查找字典的项目是否已更改。我使用了另一个问题的比较代码,但这在某种程度上是您可以用于解决问题的

import requests 
import time

def dict_compare(d1, d2):
    d1_keys = set(d1.keys())
    d2_keys = set(d2.keys())
    shared_keys = d1_keys.intersection(d2_keys)
    added = d1_keys - d2_keys
    removed = d2_keys - d1_keys
    modified = {o : (d1[o], d2[o]) for o in shared_keys if d1[o] != d2[o]}
    same = set(o for o in shared_keys if d1[o] == d2[o])
    return added, removed, modified, same

first = requests.get("https://api-mainnet.magiceden.dev/v2/collections?offset=0&limit=1").json()[0]

while True: 
    get_second = requests.get("https://api-mainnet.magiceden.dev/v2/collections?offset=0&limit=1")

    if get_second.status_code == 200:
        print("ok")

    second = get_second.json()[0]
    added, removed, modified, same = dict_compare(first, second)

    if len(added) > 0 or len(modified) > 0  or len(removed) > 0:
        print("added: ", added)
        print("modified: ", modified)
        print("removed: ", removed)
    else:
        print("No change")
        
    time.sleep(15)
 类似资料:
  • 问题内容: 短篇小说:如何比较两个JSON块?下面的代码错误。 长话短说:我正在做一些E2E测试,其中一部分我需要将请求的JSON正文与接收到的JSON进行比较。为此,我尝试将期望的接收到的json解组到一个空接口(以避免任何类型错误),但出现错误: 。我猜编码/ json不喜欢空接口,所以问题是如何比较两个JSON块?字符串比较容易出错,因此我尝试避免这种情况。 问题答案: 您需要将指针传递给和

  • 此项目是一个可编辑的字典程序。我正在尝试循环浏览已添加到词典中的单词,并将用户通过扫描仪输入的单词与已添加的单词进行比较。我的问题是,无论输入多么准确,我创建的异常总是被调用。我不确定异常是否错误,或者字符串是否比较不正确。字典中的单词是从一个名为“dictionary.txt”的文件中读取的。如果有帮助,程序将使用输入/输出。这是代码。。。。请帮忙!!

  • 问题内容: 我知道,如果你将装箱的原始整数与常量进行比较,例如: 将自动取消装箱,比较将起作用。 但是,当你比较两个装箱并想比较等于或小于/大于时会发生什么? 上面的代码是否会导致检查它们是否是同一对象,或者在这种情况下会自动拆箱? 关于什么: ? 问题答案: 不,在Integer,Long等之间==,将检查引用是否相等 -即 这将检查是否x并y引用相同的对象而不是相等的对象。 所以 保证可以打印

  • 问题内容: 我想知道如何在一行中比较多个字符串。我尝试使用|| 但不适用于布尔值或字符串。这是我的代码是什么样的: 对于那些将其标记为重复的对象,我在此处检查了200多个关于堆栈溢出的问题,但没有一个起作用。@Chrylis发布的一个实际上没有帮助。他们只是在问==和.equals()的区别 问题答案: 首先,不要用于字符串。稍后您将了解原因。您想按字符串的内容而不是它们在内存中的位置比较字符串。

  • 问题内容: 我有一个程序正在制作,当用户输入一种心情时,它将在此基础上输出报价。我需要告诉程序 问题是,我不知道如何使程序识别输入并基于该输出文本…这是到目前为止我所拥有的代码。 问题答案: 首先,看起来您正在处理错误的变量。我想你打算比较。 处理字符串时,请始终使用而不是。比较参考值(通常不可靠),同时比较实际值。 将您的字符串转换为全部大写或全部小写也是一个好习惯。在本示例中,我将使用小写字母

  • 问题内容: 在java中如何比较字符串,使用==还是equals 问题答案: == 测试引用是否相等(它们是否是同一对象)。 .equals() 测试值是否相等(在逻辑上是否为“相等”)。 String.contentEquals() 将的内容String与任何内容进行比较CharSequence(从Java 1.5开始可用)。 因此,如果要测试两个字符串是否具有相同的值,则可能要使用Object