从Python中解析JSON字符串中的嵌套对象的阅读

2024-04-23 06:49:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的JSON字符串,它不是我想要的那么简单。我希望能得到一些帮助。我需要对每个条目进行迭代,将其与另一组同样位于JSON字符串中的值进行比较(这对我来说结构更简单)。我正在寻找一个建议的模式获得数据出来,并在比较中使用它,然后如果它是我想要的结果-打印它。你知道吗

JSON:

{"success":true,
"message":"",
"result":
     {"buy":
            [
             {"Quantity":2.40078779,"Rate":1.11811290},  
             {"Quantity":0.00085042,"Rate":1.11584924} ....

等等。有很多价值观。我获取数据的方式如下:

print ("Buy: ",b1['result']['buy'][0]['Quantity'], ",",b1['result']['buy'][0]['Rate'])

这是中间的[0],我可以想象我可以得到条目数,然后通过I=0循环到range(条目数),但这确实会使我的逻辑偏离,因为我比较的其他JSON字符串的结构要简单得多:

简单(对我来说)JSON条目示例:

{
    "eth_btc":{
        "asks":[
            [105,1],
            [105.5,15],
            [104.504,0.425],
            [105.505,0.1]
        ],
        "bids":[
            [109,6],
            [113.082,0.46540304],
            [104.91,0.99007913],
            [106.83,0.07832332]
        ]
    }
}


for asks in easyJson['eth_btc']['asks']:
    print (asks)

我需要将这个容易迭代的asks值与上面字符串中的rate值进行比较。由于结构不同(我把学习Python作为一种爱好),所以我无法确定迭代这些不同结构的数据集的最佳方法。这些数据集将非常庞大,将5组数据中的4000个左右的值逐一进行比较,以根据我的标准找到合适的一对。你知道吗

我是否应该将JSON中的所有数据规范化为其他数据,然后在那里进行比较?这是一个5路与成千上万的价值观比较。你知道吗

伪代码:

If ask1 < bid2 then if volume of ask1 is <= volume of bid2 then do something
   etc - then ask1 vs bid3, and so on..
       ask2 vs bid1, ask2 vs bid3 ...
          ask3 vs bid1, ask3 vs bid2, ask3 vs bid4 ...

如果不清楚,我道歉。我正在努力解决这个项目的头上,我觉得我是蛮逼它,而不是使用Python的力量,我想学习!!!!你知道吗

谢谢你的帮助-指导-任何事!你知道吗


Tags: 数据字符串jsonrate条目buyresult结构
1条回答
网友
1楼 · 发布于 2024-04-23 06:49:47

我已经理清了问题的第一部分——如何获取我感兴趣的数据:

import json
b="""{"success":true,"message":"","result":{"buy":[{"Quantity":6.67178734,"Rate":0.01390041},{"Quantity":244.11602480,"Rate":0.01386500},{"Quantity":34.17058305,"Rate":0.01385014},{"Quantity":48.76276808,"Rate":0.01383242},{"Quantity":2.00000000,"Rate":0.01383239},{"Quantity":0.07212509,"Rate":0.01383000},{"Quantity":256.05669876,"Rate":0.01381066},{"Quantity":75.00000000,"Rate":0.01381065},{"Quantity":0.12796429,"Rate":0.01381050},{"Quantity":11.51657190,"Rate":0.01381048},{"Quantity":0.07895698,"Rate":0.01381047},{"Quantity":1.00000000,"Rate":0.01380653},{"Quantity":1.07501432,"Rate":0.01380650},{"Quantity":22.18832778,"Rate":0.01380474}]}}
"""
b1 = json.loads(b)
buy = list(b1['result']['buy'])
for item in buy:
    print ("Rate: ",item['Rate'], "Quantity: ",item['Quantity'])

我需要为我需要的数据创建一个列表,否则我就无法清楚地遍历它。如果有更好的方法,请告知。我不希望使用DICT对象并将其强制转换为一个列表,但如果不是这样的话,这些数据的格式我就不知道如何干净地遍历它。你知道吗

相关问题 更多 >