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

时间:2017-08-11 10:52:29

标签: python json

我有以下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到范围(条目数)但它真的抛出我的逻辑关闭我正在比较的条目的其他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)

我需要比较这个问题,这个值很容易迭代,而不是上面字符串中的比率值。由于结构不同(我正在学习Python作为一种业余爱好),我无法绕过以不同方式迭代这些数据集的最佳方式。数据集将是大型的,比较生活在5组数据中的4000个左右的值,一个一个,根据我的标准找到恰当的一对。

我是否应该将所有数据FROM JSON标准化为其他内容,然后在那里进行比较?这是与数千个值的比较。

伪代码:

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的力量,我想学习!!!!

感谢任何帮助 - 方向 - 任何事情!

1 个答案:

答案 0 :(得分:0)

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

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对象并将其转换为列表,但是否则这个数据格式化的方式我无法弄清楚如何干净地迭代它。