python json用于解析

python json用于解析,python,json,parsing,Python,Json,Parsing,字符串的组成如下所示: {resp_to={request=objects_download}|objects={object1={object_name=Name of object 1|objecttype=type1}|object2={object_name=Name of object 2|objecttype=type1}}|error=0} 如何为对象中包含的所有对象提取所有对象名称的最佳方法 我对json感到困惑,理解它的工作原理让我发疯。您可以使用递归下降解析器解析文本,例如

字符串的组成如下所示:

{resp_to={request=objects_download}|objects={object1={object_name=Name of object 1|objecttype=type1}|object2={object_name=Name of object 2|objecttype=type1}}|error=0}
如何为对象中包含的所有对象提取所有对象名称的最佳方法


我对json感到困惑,理解它的工作原理让我发疯。

您可以使用递归下降解析器解析文本,例如:

例如:

import json

text = ("{resp_to={request=objects_download}|"
        "objects={object1={object_name=Name of object 1|objecttype=type1}"
        "|object2={object_name=Name of object 2|objecttype=type1}}|error=0}")
obj = Parser()(text)[0] # parse text into a dict
print(json.dumps(obj, indent=2)) # pretty print
输出:

{
  "resp_to": {
    "request": "objects_download"
  }, 
  "objects": {
    "object1": {
      "object_name": "Name of object 1", 
      "objecttype": "type1"
    }, 
    "object2": {
      "object_name": "Name of object 2", 
      "objecttype": "type1"
    }
  }, 
  "error": 0
}

这种语法不是JSON。不过我不知道那是什么语法。非常感谢Martijn,我尝试用python-mjson.tool解析它,事实上它给了我一个“没有JSON对象可以被解码”。问题是从你的潜在客户那里得到对象名作为列表的最佳方式是什么?你可以使用一些正则表达式替换(或类似的东西:
str.replace('=',':')
——但是第二种方法不是一个很好的主意)。@MostafaR:这里没有引号,我们不知道这种格式如何处理unicode。不是个好主意。@MartijnPieters是的,只是个简单的想法;-)这只适用于这个执行程序,但我需要解析的输出对于lenth和object是可变的。@TonyManero:我不明白。要包含
Parser()
失败的示例输入
{
  "resp_to": {
    "request": "objects_download"
  }, 
  "objects": {
    "object1": {
      "object_name": "Name of object 1", 
      "objecttype": "type1"
    }, 
    "object2": {
      "object_name": "Name of object 2", 
      "objecttype": "type1"
    }
  }, 
  "error": 0
}