首页 > 解决方案 > JSON数据通过python转换为字符串数据

问题描述

我想将下面的 JSON 数据转换为与下面相同的字符串数据。

   {
         "Time Series (Daily)": {
            "2020-04-02": {
                "1. open": "1693.5300",
                "2. high": "1726.7600",
                "3. low": "1664.1300",
                "4. close": "1724.8600",
                "5. volume": "766313"
            },
            "2020-04-01": {
                "1. open": "1737.2800",
                "2. high": "1762.4399",
                "3. low": "1685.3700",
                "4. close": "1685.4600",
                "5. volume": "1243600"
            }
    }

转换成这样

^KS11     |20200402|1664.1300   |1693.5300   |1726.7600   |1724.8600  |

^KS11     |20200401|1685.4600   |1737.2800   |1762.4399   |1685.3700  |

标签: pythonjson

解决方案


如果您以字符串形式提供 json 数据,我建议您使用json包,如下所示:

import json

jdata = """
    {
         "Time Series (Daily)": {
            "2020-04-02": {
                "1. open": "1693.5300",
                "2. high": "1726.7600",
                "3. low": "1664.1300",
                "4. close": "1724.8600",
                "5. volume": "766313"
            },
            "2020-04-01": {
                "1. open": "1737.2800",
                "2. high": "1762.4399",
                "3. low": "1685.3700",
                "4. close": "1685.4600",
                "5. volume": "1243600"
            }
        }
    }"""

def day_to_str(day, data):
    return '|'.join(('^KS11     ',
                    day.replace('-', ''),
                    data['1. open'],
                    data['2. high'],
                    data['3. low'],
                    data['4. close'],
                    ''))

time_series = json.loads(jdata)['Time Series (Daily)']

for day in time_series:
    print(day_to_str(day, time_series[day]))

输出:

^KS11     |20200402|1693.5300|1726.7600|1664.1300|1724.8600|
^KS11     |20200401|1737.2800|1762.4399|1685.3700|1685.4600|

推荐阅读