将JSON字符串转换为对象

时间:2018-01-02 12:03:08

标签: javascript json node.js

我有一个字符串对象,如下所示: -

[{"TradeId":123423,"TradeDate":"2017-12-11T18:30:00.000Z","Commodity":"AL","Side":"Buy","Qty":100,"Price":2000,"Location":"NY"},
{"TradeId":123428,"TradeDate":"2017-12-15T18:30:00.000Z","Commodity":"AL","Side":"Buy","Qty":100,"Price":2000,"Location":"NY"}]

我想将其用作可以调用地图的数组。 如何实现这一目标。

我做了JSON.parse()这个字符串,但是我收到一条错误声明: -

Unexpected token o in JSON at position 1

当我这样做时

JSON.parse('[{"TradeId":123423,"TradeDate":"2017-12-11T18:30:00.000Z","Commodity":"AL","Side":"Buy","Qty":100,"Price":2000,"Location":"NY"},
    {"TradeId":123428,"TradeDate":"2017-12-15T18:30:00.000Z","Commodity":"AL","Side":"Buy","Qty":100,"Price":2000,"Location":"NY"}]')

注意quotes (''),从我的节点终端,它可以工作!!!

请注意我从websocket获取此字符串。

我的最终目标是将此字符串用作可以使用地图操作的数组

socket.on('getdata', (msg) => {
    console.log("getdata",msg);
    //TradesActions.loadTrades(msg)
    myStore.dispatch(TradesActions.loadTrades(JSON.parse(msg.toString())))
})

在上面发送之后(react + redux),它使用的是一些组件如下: -

trades.map((trade, index) => {...})

谢谢, 阿玛尔

3 个答案:

答案 0 :(得分:3)

JSON.parse假设你传递给它的是一个字符串。

您的数据已经是一个对象。 JSON.parse会将所述对象强制转换为字符串,然后尝试解析它。基本上,这样的事情:

JSON.parse(obj.toString())

将对象转换为字符串,返回"[object Object]"

现在猜猜位置1" 错误中的"意外标记o从哪里获得"o"

TL; DR:不要使用JSON.parse。您的数据已经是一个对象。

答案 1 :(得分:0)

我能够解决这个问题。

问题不在这里,而是在使用amqplib从RabbitMQ获取消息的代码部分。

收到消息后,我做了JSON.parse(msg.content)而不是msg.content.toString(),它解决了问题! 非常感谢大家的时间和精力。

答案 2 :(得分:-1)

您可以使用

将第一个字符串对象转换为Javascript字符串
#macro(sort $array)
  #set($size=$array.size())
  #set($index1=0)
  #foreach($element1 in $array)
    #set($index2=0)
    #set($minElement=$element1)
    #set($minElementIndex=$index1)
    #foreach($element2 in $array)
      #if($index2>$index1)
        #if($minElement.name.compareTo($element2.name)>0)
          #set($minElement=$element2)
          #set($minElementIndex=$index2)
        #end
      #end
      #set($index2=$index2+1)
    #end
    #set($temp=$array.get($index1))
    #set($junk=$array.set($index1, $minElement))
    #set($junk=$array.set($minElementIndex, $temp))
    #set($index1=$index1+1)
  #end
#end

比之后 -   vat jsonString = JSON.stringify([{"TradeId":123423,"TradeDate":"2017-12-11T18:30:00.000Z","Commodity":"AL","Side":"Buy","Qty":100,"Price":2000,"Location":"NY"},{"TradeId":123428,"TradeDate":"2017-12-15T18:30:00.000Z","Commodity":"AL","Side":"Buy","Qty":100,"Price":2000,"Location":"NY"}]);