【问题标题】:JS+REST+NodeJS: How to parse a JSON list from a JSON objectJS+REST+NodeJS:如何从 JSON 对象解析 JSON 列表
【发布时间】:2016-03-07 03:19:23
【问题描述】:

在 Python 中,我有一个 JSON 对象,在其字段内有一个 (field3),其中包含一个 json 对象列表。

此对象从 Python 脚本传递到基于 JS 和 Express 框架的 REST 服务:

urllib.request.urlopen(
    urllib.request.Request(
    url="http://"+self.__host+_":"+self.__port+"/api"+restmethod,
    data=urllib.parse.urlencode(objData).encode('utf8'),
    headers=self.__headertoken,method=httpmethod)
)

但是当服务器收到 JSON 时,会自动将 field33 识别为字符串而不是 JSON 列表。

{ field1: '',
  field2: '',
  field3: '[{\'field31\': \'\', \'field32\': \'\', \'field33\':\'\',\'field34\': \'\', \'field34\': \'0.00\'}]',
  field4: ''
}

所以当我尝试 obj.field3[0] 时,它会返回一个字符串而不是 JSON 列表。

我尝试了JSON.parse(string)JSON.stringify(object),但我仍然无法访问 Json 列表及其元素,例如 obj.field3.field31

如何从父 JSON 字段中恢复该 JSON 列表? 谢谢

【问题讨论】:

    标签: javascript python json rest express


    【解决方案1】:

    field3 应该是:

    '[{\"field31\": \"\",...}]',
    

    或者简单地说:

    '[{"field31": "",...}]',
    

    单引号'在被JSON.parse解析时会报错。

    obj.field3 是一个数组,所以要获得field31 的值,你应该使用:

    obj.field3[0].field31

    【讨论】:

    • 谢谢@yangguang。只是为了完成答案,我在将字符串解析为 JSON 对象之前设置了这行代码:var jsonlist = JSON.parse(objOrder.items.replace(/'/g,"\""))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多