我正试图将一个非常复杂的数组结构转换为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
}
这对我来说似乎相当复杂,所以如果我的问题/代码/结构令人困惑或不清楚,请告诉我。
把它分成易于管理的小块。创建理解如何单独构造每个嵌套对象的方法,然后在适当的时候调用它们。例如:
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;
}
你不是在创建数组,而是在创建对象。在您的伪代码中,封闭数组没有任何意义。
对象:{ key0:val0, key1:val1 }
Array: [ 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