【问题标题】:Transform json to javascript object将 json 转换为 javascript 对象
【发布时间】:2019-05-03 15:47:49
【问题描述】:

我正在尝试从 python 发送一个字典:


def toJsonCustom(self):

        ajson = []
        ajson.append({
        'id': self.id,
        'data': self.data
        })

        return json.dumps(

            ajson, default=lambda obj: obj.__dict__, separators=(',', ':'),indent=4,
        )



async def curl(url,data):
    async with aiohttp.ClientSession() as session:
        async with session.post(url, json={'datajson':data}) as response:
        print(repr(response))
            chunk = await response.content.read()
            print('Downloaded: %s' % len(chunk))



#output JSON: 

"{"datajson": "[\n    {\n        \"id\":\"test\",\n        \"data\":\"test\"\n    }\n]"}"

当尝试将此 json 的输出转换为来自 javascript 的对象时,我无法定义。

  const data = JSON.parse(get(props, 'websocket.data', null)) || get(state, 'websocket.data') || 'No data';


  console.log('Object json: ', (data));


# output: {"datajson": "[ n    { n         "id ": "test "  n         "data ": "test " n    } n]"}


  console.log('Object json: ', (data.id));

# output:undefined

如何正确地将 json 转换为 javascript 对象?

谢谢,

【问题讨论】:

标签: javascript json object transform


【解决方案1】:

我觉得你需要data.datajson[0].id

【讨论】:

  • 嗨@ehacinom,我得到以下信息:TypeError:无法读取未定义的属性“0”。发生了什么?
  • 调试时,尝试一次做部分。因此,首先注销console.log(data) 是个好主意。下一次尝试console.log('datajson', data.datajson)(您不需要数据周围的括号)。如果那是未定义的,你需要找出你的对象的typeof。试试typeof datatypeof data.datajsondeveloper.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • console.log ('datajson', data.datajson) 返回未定义。当 json 再次解析时,正如@vassiliskrikonis 所说,我得到: Unexpected token or in JSON at position 0
  • console.log(data) 记录了什么? console.log(typeof data) 呢?
  • console.log(data): {"datajson":"[\n{\n\"id\":\"test\",\n\"value\":\"test \"\n}\n]"} console.log(typeof data): 字符串 console.log('datajson', data.datajson): datajson undefined .似乎 JSON 构建良好。我检查了jsonformatter.curiousconcept.com 的数据输出我不明白为什么我得到 undefined ...
【解决方案2】:

看来你需要两次解析JSON字符串才能得到你需要的对象:

  • 第一次解析为您提供对象{ "datajson": "[{..." }注意datajson 属性的值是一个字符串
  • 所以让我们再次解析上面的对象nestedData = JSON.parse(data.datajson)

【讨论】:

  • 我得到:意外的令牌或位置 0 处的 JSON
  • 正如我在上面的评论中看到的,如果data.datajson 返回 undefined 那么问题完全是另外一回事。尝试按照 Jabberwocky 对您的评论制作可重现的脚本,以便我们为您提供帮助 :)
猜你喜欢
  • 2020-01-07
  • 1970-01-01
  • 2015-01-02
  • 2013-11-02
  • 1970-01-01
  • 2021-05-02
  • 2016-12-26
  • 2018-04-28
相关资源
最近更新 更多