如何将这个JSON解析成几个“对象”?

时间:2013-04-27 22:21:11

标签: javascript json deserialization

我有一个像这样定义的对象:

function Question_Value__c () {
    this.Id=null;
    this.Name=null;
    this.Question__c=null;
    this.Order__c=null;
}

我正在尝试将这个JSON反序列化为其中几个对象,但我无法让它工作:

[{"id":"a0Dd000000RTVsAEAX","name":"ee"},{"id":"a0Dd000000RTVsAEAX","name":"ee"},{"id":"a0Dd000000RTVsAEAX","name":"ee"},{"id":"a0Dd000000RTVsAEAX","name":"ee"},{"id":"a0Dd000000RTVsAEAX","name":"ee"}]

这是我到目前为止所拥有的:

allValues = new Array(new Question_Value__c());
$(returnedJSON).each(function() {
    allValues.push($(this));
console.log(allValues[0].id);
});

非常感谢任何帮助,我对使用JSON和javascript非常陌生。

1 个答案:

答案 0 :(得分:1)

首先,您需要在JSON字符串中放置实际的",但使用"对这些字符进行编码无效,但这些字符在HTML中。

此外,如果要使用数据填充Question_Value_c个对象,则应将构造函数更改为:

   function Question_Value__c(data) {
       $.extend(this, data); //have a look at $.extend
   }

然后您可以这样做(请注意,您的对象没有Question__cOrder__c属性):

  var json = '[{"id":"a0Dd000000RTVsAEAX","name":"ee"},{"id":"a0Dd000000RTVsAEAX","name":"ee"},{"id":"a0Dd000000RTVsAEAX","name":"ee"},{"id":"a0Dd000000RTVsAEAX","name":"ee"},{"id":"a0Dd000000RTVsAEAX","name":"ee"}]',
       allValues = [];

   $.each($.parseJSON(json), (function () {
       allValues.push(new Question_Value__c(this));
   }));

   console.log(allValues);