1

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

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

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

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

谢谢。

4

3 回答 3

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]});
}

现场演示

于 2012-07-24T09:37:05.630 回答
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 标准的字符串的正则表达式,但这不是通用解决方案

于 2012-07-24T09:35:30.240 回答
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 page中有详细解释

于 2012-07-24T09:48:21.017 回答