【问题标题】:concate two json object of same key连接两个相同键的json对象
【发布时间】:2014-02-13 06:31:54
【问题描述】:

我有两个具有相似键 question 的 json 对象。

var data = {"question":[{
    QuestionID : counter1,
QuestionText: question1, 
    Choices:[{ChoiceID:100,Choice:"Yes",NextQuestionID:counter},
             {ChoiceID:101,Choice:"No",NextQuestionID:counter}],
AnswerType: answer_type
}]};


var data1 = {"question":[{
    QuestionID : counter2,
QuestionText: question2, 
    Choices:[{ChoiceID:103,Choice:"Yes",NextQuestionID:counter},
             {ChoiceID:105,Choice:"No",NextQuestionID:counter}],
AnswerType: answer_type
}]};

我想将它们连接成一个带有“问题”键的 json 对象,值将是如下所示的数组

var final = {"question":[
{
    QuestionID : counter1,
QuestionText: question1, 
    Choices:[{ChoiceID:100,Choice:"Yes",NextQuestionID:counter},
             {ChoiceID:101,Choice:"No",NextQuestionID:counter}],
AnswerType: answer_type
},
{
QuestionID : counter2,
QuestionText: question2, 
    Choices:[{ChoiceID:103,Choice:"Yes",NextQuestionID:counter},
             {ChoiceID:105,Choice:"No",NextQuestionID:counter}],
AnswerType: answer_type
}
]};

我尝试了很多方法,下面的方法接近我的目的地,但它创建了数据数组和 data1 对象

var jsons = new Array();
jsons.push(data);
jsons.push(data1);

如果我可以连接每个索引包含对象的question:Objectquestion:Array[2],我的问题就会解决。最终输出为question:Array[3]

任何帮助将不胜感激。 提前致谢。

【问题讨论】:

  • 那是 JavaScript,不是 JSON。另外,请描述您尝试过的方法和无效的方法。
  • 如果只是这两个,你需要 {'question': [q1, q2] } 就做一个var myObject = {'question': [data.question, data1.question] };

标签: arrays json object


【解决方案1】:

我解决了这个问题

var index = 0; // number of question
$.each(previousData.question,function(){
           finalArray[index] = previousData.question[index]; //contain array
           index++; //here index is number of question
 });

 finalArray[index] = data.question;
 data = {'question': finalArray }; // convert array to object

【讨论】:

    【解决方案2】:

    可以通过jquery进行合并

    var final = $.merge(data, data1);
    

    【讨论】:

      【解决方案3】:

      好吧,您的代码实际上是将两个对象推入一个列表,因此您可以得到一个对象列表。在您的情况下,第一个元素是数据,第二个元素是 data1。所以你实际上不会得到所需的结果。

      既然你想要一个对象试试这个

      /* assuming data and data1 are created and both have the key question */
      var final = {'question': [data.question, data1.question] };
      
      // or using the concat feature
      var final = data.question.concat(data1.question);
      

      【讨论】:

      • 我从用户那里得到了 10 个问题,最后我想要像 question:Array[10] 这样每个数组索引包含每个问题。第一个选项工作正常,直到输入两个问题question:Array[2]。但是当问题超过两个时,它会变成 question:Array[2]where Array[0] 包含 Array[2] 并且 Array[1] 包含问题 3 作为对象格式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多