Преобразовать поле заметок в JsonJavaArray - PullRequest
0 голосов
/ 17 ноября 2018

В моем приложении XPages я использую класс com.ibm.commons.util.io.json.JsonJavaObject для получения списка контактных данных (список телефонов).

Объект, который я хочу привязать к повторяющемуся элементу управления, который будет отображать все контактные данные контакта.

Я хочу сохранить значения для JsonJavaArray в поле Notes, и когда я отображаю документ через XPage, я хочу снова прочитать его, поэтому мне нужно преобразовать его.

Вот как json сохраняется в поле:

{
    "locations": [
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        },
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        },
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        },
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        },
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        }
    ]
}

Вот как я читаю поле, преобразовываю его в jsonobject и читаю массив:

String codeString = doc.getItemValueString(fieldName);
JsonJavaObject objJson = new JsonJavaObject(codeString);                
JsonJavaArray arrJson = objJson.getAsArray("locations");

Я получаю следующую ошибку:

Ошибка в com.ibm.commons.util.io.json.JsonJavaObject, строка 56: java.lang.ArrayIndexOutOfBoundsException: индекс массива вне диапазона: 1

Может кто-нибудь объяснить мне, что я делаю не так?

1 Ответ

0 голосов
/ 17 ноября 2018

Вы должны использовать JsonParser для создания объекта JSON из объекта String, например:

JsonJavaObject objJson = (JsonJavaObject) JsonParser.fromJson(JsonJavaFactory.instanceEx, codeString);

Дополнительные примеры можно найти здесь:

https://www.programcreek.com/java-api-examples/?api=com.ibm.commons.util.io.json.JsonParser

...