Как разобрать JSON-объект, содержащий массив без имени - PullRequest
0 голосов
/ 12 июня 2019

Мне нужно проанализировать объект JSON, который выглядит следующим образом (у него нет имени для массива):

{
"id": "123123",
[{
"id": "456456",
"name": "name1",
"content": "content1"
}, {
"id": "789789",
"name": "name2",
"content": "content2"
}]
}

У меня есть два объекта, которые выглядят так:

public class MyFirstObject {
    private String id;
    private List<MySecondObject> lst_entries;
}

public class MySecondObject {
    private String id;
    private String name;
    private String content;
}

Как мне проанализировать список MySecondObject, если исходный JSON не имеет имени для этого объекта?

Я искал что-то подобное в stackoverflow и не смог найти ответ или случай, похожий на мой, который мог бы помочь ...

Буду признателен за помощь. Спасибо!

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Если вы настаиваете на анализе неверного JSON, это может быть сделано методом грубой силы.Используйте регулярные выражения для разделения строки идентификатора и строки массива, используйте их для создания допустимого JSON, а затем преобразуйте в объект.Однако такой подход очень неправильный.Лучше просто попросить поставщика изменить его.

0 голосов
/ 12 июня 2019

Первое, что у вас неверный формат JSON. Я полагаю, вы ошиблись. Итак, что у вас есть.

{
"id": "123123",
[{
"id": "456456",
"name": "name1",
"content": "content1"
}, {
"id": "789789",
"name": "name2",
"content": "content2"
}]
}

Второй элемент в приведенном выше JSON, который является массивом, не имеет своего имени. И вы не можете поместить элемент в объект json без имени. Он всегда должен быть в паре имя и значение. Так что если вы хотите сделать приведенный выше JSON действительным, это будет что-то вроде этого.

{
    "id": "123123",
    "users": [{
        "id": "456456",
        "name": "name1",
        "content": "content1"
    }, {
        "id": "789789",
        "name": "name2",
        "content": "content2"
    }]
} 

Это действительный JSON. И теперь вы можете легко разобрать его.

try {
        JSONObject obj = new JSONObject(jsonString);

    //getting the id
    String id = obj.getString("id");

    //getting the users
    JSONArray users = obj.getJSONArray("users");

    //users is a JSON array so you need to loop through it
    for(int i = 0; i<users.length(); i++){

        //getting every user from the array 
        JSONObject objUser = users.getJSONObject(i);

        //reading user values 
        String uid = objUser.getString("id");
        String name = objUser.getString("name");
        String content  = objUser.getString("content");

    }

} catch (JSONException e) {
    e.printStackTrace();
}

Спасибо :) А если вы хотите узнать о JSON очень быстро, вы можете посмотреть мое 7-минутное видео JSON на YouTube. Изучение JSON за 7 минут .

...