2011-09-12 128 views
1

我试图将一个非常复杂的数组结构转换为JSON对象,但我不确定如何使用转换。结构如下:Java - 从多个多维数组创建JSON对象

String[] foo = new String[10]; 
String[][] bar = new String[10][8]; 
String[][] blargh = new String[8][2]; 
// Populate foo 
foo[0] = "foo1"; 
// ... and so on 
bar[0][0] = "bar1"; 
// ... and so on 
blargh[0][0] = "blargh1;" 
// ... and so on 

然后:

public JSONObject createJSONObject() { 
/* Now, I would like to create an object with the structue: 
    [{ 
    foo[0] : { 
     bar[0][0] : { 
      // more key-pair values, including blargh[0][0] and blargh[0][1] 
     }, 
     bar[0][1] : { 
      // values of blargh[1][0] and blargh[1][1] 
     }, 
     // etc... 
    }, 
    foo[1] : { 
     bar[1][0] : { 
      /* primary index of bar will always match index of foo, as will the primary index of blargh */ 
     }, 
     // etc.. 
    }, 
    // etc.. 
    }] 
    // return the JSON encoded object 
} 

这似乎是相当复杂的我,所以请告诉我,如果我的问题/代码/结构混乱或不清晰。

回答

3

分解成可管理的块。创建了解如何单独构造每个嵌套对象的方法,然后在适当的时候调用它们。例如,类似于:

public JSONObject createJSONObject() { 
    JSONObject result = new JSONObject(); 
    for (int fooIndex = 0; fooIndex < foo.length; fooIndex++) { 
     result.put(foo[fooIndex], createBarJsonObject(fooIndex)); 
    } 

    return result; 
} 

private JSONObject createBarJsonObject(int index) { 
    JSONObject result = new JSONObject(); 
    String[] keys = bar[index]; 
    for (int barIndex = 0; barIndex < keys.length; barIndex++) { 
     result.put(keys[barIndex], createBlarghJsonObject(fooIndex)); 
    } 

    return result; 
} 

private JSONObject createBlarghJsonObject(int index) { 
    JSONObject result = new JSONObject(); 
    String[] keyValue = blargh[index]; 
    result.put(keyValue[0], keyValue[1]); 

    return result; 
} 
0

你不是在创建数组,而是在创建对象。你的伪代码中的封闭数组没有意义。

对象:{ key0:val0, key1:val1 }

阵:[ val0, val1, val2 ]

{ // start object 
    key_foo0 : // foo[0] string as a key 
    { // new object as a value 
     key_bar0_0 : 
     { 
      key_blargh0_0: val_blargh0_1, // blargh[0][1] as value 
      key_bleuuw0_0: val_bleuuw0_1 
     } 
    } 
} // end object