Java - создание объекта JSON из нескольких многомерных массивов - PullRequest
1 голос
/ 12 сентября 2011

Я пытаюсь преобразовать очень сложную структуру массива в объект 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
}

Это кажется мне достаточно сложным, поэтому, пожалуйста, скажите, если мой вопрос / код / ​​структура сбивают с толку или неясны.

Ответы [ 2 ]

3 голосов
/ 12 сентября 2011

Разбейте его на управляемые куски. Создайте методы, которые понимают, как создавать каждый вложенный объект индивидуально, а затем вызывать их в подходящее время. Например, что-то вроде:

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 голосов
/ 12 сентября 2011

Вы не создаете массивы, вы создаете объекты.Нет смысла в массиве включения в вашем псевдокоде.

Объект: { 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...