用反斜杠编码解码JSON数据

2024-10-03 09:07:17 发布

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

我有以下JSON数据。你知道吗

"[
    \"msgType\": \"0\",
    \"tid\": \"1\",
    \"data\": \"[
        {
            \\\"EventName\\\": \\\"TExceeded\\\",
            \\\"Severity\\\": \\\"warn\\\",
            \\\"Subject\\\": \\\"Exceeded\\\",
            \\\"Message\\\": \\\"tdetails: {
                \\\\\\\"Message\\\\\\\": \\\\\\\"my page tooktoolong(2498ms: AT: 5ms,
                BT: 1263ms,
                CT: 1230ms),
                andexceededthresholdof5ms\\\\\\\",
                \\\\\\\"Referrer\\\\\\\": \\\\\\\"undefined\\\\\\\",
                \\\\\\\"Session\\\\\\\": \\\\\\\"None\\\\\\\",
                \\\\\\\"ResponseTime\\\\\\\": 0,
                \\\\\\\"StatusCode\\\\\\\": 0,
                \\\\\\\"Links\\\\\\\": 215,
                \\\\\\\"Images\\\\\\\": 57,
                \\\\\\\"Forms\\\\\\\": 2,
                \\\\\\\"Platform\\\\\\\": \\\\\\\"Linuxx86_64\\\\\\\",
                \\\\\\\"BrowserAppname\\\\\\\": \\\\\\\"Netscape\\\\\\\",
                \\\\\\\"AppCodename\\\\\\\": \\\\\\\"Mozilla\\\\\\\",
                \\\\\\\"CPUs\\\\\\\": 8,
                \\\\\\\"Language\\\\\\\": \\\\\\\"en-GB\\\\\\\",
                \\\\\\\"isEvent\\\\\\\": \\\\\\\"true\\\\\\\",
                \\\\\\\"PageLatency\\\\\\\": 2498,
                \\\\\\\"Threshold\\\\\\\": 5,
                \\\\\\\"AT\\\\\\\": 5,
                \\\\\\\"BT\\\\\\\": 1263,
                \\\\\\\"CT\\\\\\\": 1230
            }\\\",
            \\\"EventTimestamp\\\": \\\"1432514783269\\\"
        }
    ]\",
    \"Timestamp\": \"1432514783269\",
    \"AppName\": \"undefined\",
    \"Group\": \"UndefinedGroup\"
]"

我想把这个JSON文件包装成一个单独的层次,也就是说,我想删除里面的嵌套结构,并将数据复制到顶层JSON结构。我该怎么做?你知道吗

如果这个结构名为json\u data

我希望能够访问

json_data['Platform']
json_data[BrowserAppname']
json_data['Severity']
json_data['msgType']

基本上是一些基本的正常化。什么使用python是最简单的方法


Tags: 数据jsonmessagedata结构atbtplatform
2条回答

我不确定发生了什么,但这看起来不像是有效的JSON。你知道吗

  1. 你有一些双引号转义一次,一些两次,一些三次等等
  2. 在类似object[]的列表中有键/值对
  3. tdetails缺少尾随引号

即使修复了上述问题,您的data列表仍被引用为多行字符串,这是无效的。你知道吗

似乎这个“JSON”是由一个不懂JSON的人手工构建的。你知道吗

您可以尝试使用以下方法将数据“按摩”到JSON中:

import re
x = re.sub(r'\\+', '', js_str)
x = re.sub(r'\n', '', js_str)
x = '{' + js_str.strip()[1:-1] + '}'

这将使字符串几乎类似于json,但仍然需要修复第3点。你知道吗

在这种情况下,通常不安全但可能正常的解决方案是:

import json

d = json.loads(json_string.replace('\\', ''))

相关问题 更多 >