Split String []生成不同的JSON

时间:2012-07-24 09:33:07

标签: jquery json

我想知道如何使用jquery分割它...

 "{"answer":["q1001-a2","q1002-a2","q1003-a2","q1004-a2","q1005-a2","q1006-a2"]}"

所以我可以制作以下JSON ......

 {
  "d": [
       {
          "question": 1001,
          "answer": "a2"
       },
       {
          "question": 1002,
          "answer": "a2"
       }
       ]
 }

感谢。

3 个答案:

答案 0 :(得分:1)

循环answer,将元素拆分为-,创建新元素,然后将其推送到d

var ret = {d: []};
// if you have json string, then you could jQuery.parseJSON to parse it
var obj = {"answer":["q1001-a2","q1002-a2","q1003-a2","q1004-a2","q1005-a2","q1006-a2"]};
var answers = obj.answer, tmp, i;
for (i = 0; i < answers.length; i++) {
  tmp = answers[i].split('-');
  ret.d.push({"question": tmp[0], "answer": tmp[1]});
}

The live DEMO

答案 1 :(得分:0)

http://api.jquery.com/jQuery.parseJSON/

猜这应该有帮助。

"{"answer":["q1001-a2","q1002-a2","q1003-a2","q1004-a2","q1005-a2","q1006-a2"]}"

应该看起来像

'{"answer":["q1001-a2","q1002-a2","q1003-a2","q1004-a2","q1005-a2","q1006-a2"]}'

您可以尝试将“q1001”和“ - ”替换为带有符合JSON标准的字符串的正则表达式,但它不是通用的解决方案

答案 2 :(得分:0)

在jquery中使用格式化函数,如下所示:

var string = "{\"key\":\"val}{ue\"}{'key':'val}{ue'}{ \"asdf\" : 500 }";
var result = string.match(/('.*?')|(".*?")|(\d+)|({)|(:)|(})/g);
var newstring = "";
for (var i in result) {
   var next = parseInt(i) + 1;
   if (next <= result.length) {
      if (result[i] == "}" && result[next] == "{") {
         newstring += "},";
       }
      else {
        newstring += result[i];
   }
 }

此代码在jQuery - $.each loop through json code页面

中详细说明