【问题标题】:Deserialize complex JSON with pandas使用 pandas 反序列化复杂的 JSON
【发布时间】:2020-07-04 08:51:46
【问题描述】:

我正在尝试反序列化一些也与 pandas 不一致的复杂 JSON,并努力正确解析

        {
    "STATUS":"REQUEST_OK",
    "DATA":[
    {
     "companyID":"AABBCCDD",
     "ITEMS":[
        {
           "ind":"12345",
           "pt":"1231",
           "code":"E333",
           "name":"Pop ,",
           "RES":[
              {
                 "i":1,
                 "D":{
                    "e":123674,
                    "p":"",
                    "s":"",
                    "t":1000
                 },
                 "lot":"073",
                 "V":[
                    {
                       "t":6,
                       "v":0.1
                    }
                 ],
                 "p":1
              },
              {

              }
           ]
        },
        {
           "ind":"423",
           "pt":"571",
           "code":"E1",
           "name":"Dam ,",
           "RES":[
              {
                 "i":5,
                 "D":{
                    "e":120751,
                    "p":"",
                    "s":"",
                    "t":800
                 },
                 "lot":"9",
                 "V":[
                    {
                       "t":4543,
                       "v":1.33
                    }
                 ],
                 "p":1
              },
              {

              }
           ]
        },
        {
           "ind":"0323",
           "pt":"123221",
           "code":"LS",
           "name":"Paint ,",
           "RES":[
              {
                 "i":61,
                 "D":{
                    "e":946,
                    "p":"",
                    "s":"",
                    "t":11100
                 },
                 "lot":"8",
                 "V":[
                    {
                       "t":9,
                       "v":0.06
                    }
                 ],
                 "p":1
              },
              {

              }
            ]
         }
      ]
   }
 ]
}

这里的数据应该是建这个表的

 |companyID | ind  |pt   |code |name |i   |e      |p    |s     |t     |lot     |t      |v     |p
 |------------------------------------------------------------------------------------------------
 |AABBCCDD  |12345 |1231 |E333 |Pop  |1   |123674 |     |      |1000  |073     |6      |0.1   |1
 |------------------------------------------------------------------------------------------------
 |----  

等等。

对我来说最大的痛苦是这个标签可能只有 1 级

           {
           "ind":"423",
           "pt":"571",
           "code":"E1",
           "name":"Dam ,",
           "RES":[
              {

但在其中,多个

            {
                 "i":61,
                 "D":{
                    "e":946,
                    "p":"",
                    "s":"",
                    "t":11100
                 },
                 "lot":"8",
                 "V":[
                    {
                       "t":9,
                       "v":0.06
                    }
                 ],
                 "p":1
              },

例子

i:61 

表示第一个标签内有 61 个这些 json 标签。

关于如何解析这个 JSON 的任何线索?

【问题讨论】:

    标签: json pandas api parsing nested


    【解决方案1】:

    试试这个方法:

    data = """your json above"""
    import pandas as pd
    
    key = []
    value = []
    new_dat = data.split(',')
    for n in new_dat:
        if '{' in n:
            m = n.split('{')[1].strip()
        else:
            m = n.strip().replace('}','').replace('\n','')
        if ':' in m:
            key.append(m.split(':')[0])
            value.append(m.split(':')[1])
    
    pd.DataFrame([value],columns=key)
    

    输出:

           "STATUS"     "companyID"     "ind"   "pt"    "code"  "name"  "i"     "e"     "p"     "s"     ...     "name"  "i"     "e"     "p"     "s"     "t"     "lot"   "t"     "v"     "p"
    0   "REQUEST_OK"    "AABBCCDD"  "12345"     "1231"  "E333"  "Pop    1   123674  ""  ""  ...     "Paint  61  946     ""  ""  11100   "8"     9   0.06 ]  1
    

    然后您可以使用标准的 pandas 方法删除不必要的列等。

    【讨论】:

      猜你喜欢
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 2021-12-20
      • 1970-01-01
      相关资源
      最近更新 更多