2012-06-06 62 views
1

的阵列我有JSONArray如下:变换JSONArray到JSONObject的

[["title","details"],["abc","xyz"],["abc2","xyz2"]] 

如何转变成JSONObject的数组如下使用Java/JavaScript的?

[ { 'title': abc, 'details':xyz,}, {'title': abc2, 'details':xyz2}] 
+0

是不是真的【JAVA](http://stackoverflow.com/tags/java/info)要使用??? – Bergi

+0

是使用现有的Java库形式'org.json'或jQuery。 – Azi

+1

jQuery是没有Java库!!! 1!11 – Bergi

回答

1

下面代码从溶液here修改以允许值的多个阵列来进行传递。

function makeObject(keys, array) { 
    var output = []; 
    for (var o = 0; o < array.length; o++) { 
     var object = {}; 
     for (var i = 0; i < array[o].length; i ++) { 
     object[keys[i]] = array[o][i]; 
     } 
     output.push(object); 
    } 
    return output; 
} 

// input array 
var array = [["title","details"],["abc","xyz"],["abc2","xyz2"]];  

// extract keys leaving only values in array 
var keys = array.shift(); 

// build object 
var output = makeObject(keys, array); 

例子:http://jsfiddle.net/u54tT/1/

+0

谢谢你,非常有帮助的答案。我正在四处寻找JQuery实现,并没有注意到JS仍然能够转换成json。 – Azi

0

这是你在找什么?

jQuery.parseJSON(json) Returns: Object 

描述:采用格式正确的JSON字符串并返回结果JavaScript对象。 http://api.jquery.com/jQuery.parseJSON/

+0

我正在寻找解析数组。请参考上面的问题。 – Azi

0

如果我正确理解任务,那么没有任何方法可以完成这项工作,因为它似乎有点不平凡。所以你应该写你自己的改造..

1

我现在已经找到了解决这个问题的方法。仍然在寻找在此功能或具体实施的构建。

String inputStr = "[[\"title\",\"details\"],[\"abc\",\"xyz\"],[\"abc2\",\"xyz2\"]]"; 

try { 
    JSONArray inputArray = new JSONArray(inputStr); 
    JSONArray outputArray = new JSONArray(); 

    for (int i = 0; i < inputArray.length(); i++) { 
     JSONArray inArr = inputArray.getJSONArray(i); 
     for (int j = 0; j < inArr.length(); j++) { 
      if (i != 0) { 
       outputArray.put(new JSONObject().put(
         inputArray.getJSONArray(0).getString(j), inArr.get(j))); 
      } 
     } 
    } 
    System.out.println("outputArray = " + outputArray.toString()); 
} catch (JSONException jse) { 
    System.out.println("jse = " + jse.toString()); 
} 

输出:

outputArray = [{"title":"abc"},{"details":"xyz"},{"title":"abc2"},{"details":"xyz2"}]