Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно разобрать JSON (org.json.simple.*)? / 10 сообщений из 10, страница 1 из 1
25.09.2016, 22:23
    #39315245
drno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно разобрать JSON (org.json.simple.*)?
Здравствуйте.

Из файла загружается такого вида JSON

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
{  
  "from_excel":[  
    {  
      "solution":"Fisrt",
      "num":"1"
    },
    {  
      "solution":"Second",
      "num":"2"
    },
    {  
      "solution":"third",
      "num":"3"
    },
    {  
      "solution":"fourth",
      "num":"4"
    },
    {  
      "solution":"fifth",
      "num":"5"
    }
  ]
}



Пытаюсь на Java разобрать этот JSON таким образом, используя библиотеку org.json.simple.*

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Object obj = parser.parse(new FileReader("E:\\json.txt"));

        JSONObject jsonObject = (JSONObject) obj;

        out.println(jsonObject.get("from_excel"));

        JSONObject obj_new = (JSONObject) jsonObject.get("from_excel");

        JSONArray solution = (JSONArray) obj_new.get("solution");

        Iterator iterator = solution.iterator();
        while (iterator.hasNext()) {
            out.println(iterator.next());
        }



но где-то допускаю ошибку....

Как правильно разобрать этот JSON?
...
Рейтинг: 0 / 0
25.09.2016, 22:45
    #39315249
drno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно разобрать JSON (org.json.simple.*)?
На вот этой строке
Код: java
1.
JSONObject obj_new = (JSONObject) jsonObject.get("from_excel");



возникает ошибка

java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject
...
Рейтинг: 0 / 0
26.09.2016, 00:04
    #39315261
drno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно разобрать JSON (org.json.simple.*)?
решено так,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
JSONParser parser = new JSONParser();
JSONObject obj;
try {

    obj = (JSONObject) parser.parse(new FileReader("E:\\json.txt"));

    out.println("<br>"+obj);

    JSONObject jsonObject = (JSONObject) obj;

    JSONArray from_excel = (JSONArray)jsonObject.get("from_excel");
    // вариант построчного вывода 1
    for(Object o: from_excel){
        out.println("<br>"+o);
    }
    // вариант построчного вывода 2
    Iterator iterator = from_excel.iterator();
    while (iterator.hasNext()) {
        out.println("<br>"+iterator.next());
    }
    // вариант поименного вывода 3
    for (int i = 0; i < from_excel.size(); i++) {

        JSONObject jsonObjectRow = (JSONObject) from_excel.get(i);
        String num = (String) jsonObjectRow.get("num");
        String solution = (String) jsonObjectRow.get("solution");
        out.println("<br>num="+num+"; solution="+solution);
    }
} catch (Exception e) {
    out.println("Ошибка: "+e);
}
...
Рейтинг: 0 / 0
26.09.2016, 00:29
    #39315266
natanabrahamjr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно разобрать JSON (org.json.simple.*)?
drno,

чот как то мутно. gson загуглите :) создайте объект в котором есть поле аррайлиста объектов с двумя полями (что у вас в джейсоне собссно и есть) и получайте удовольствие кодом в 2 строчки. (не считая новых объектов конечно же )
...
Рейтинг: 0 / 0
26.09.2016, 17:59
    #39315860
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно разобрать JSON (org.json.simple.*)?
drnoЗдравствуйте.

Из файла загружается такого вида JSON

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
{  
  "from_excel":[  
    {  
      "solution":"Fisrt",
      "num":"1"
    },
    {  
      "solution":"Second",
      "num":"2"
    },
    {  
      "solution":"third",
      "num":"3"
    },
    {  
      "solution":"fourth",
      "num":"4"
    },
    {  
      "solution":"fifth",
      "num":"5"
    }
  ]
}



Пытаюсь на Java разобрать этот JSON таким образом, используя библиотеку org.json.simple.*

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Object obj = parser.parse(new FileReader("E:\\json.txt"));

        JSONObject jsonObject = (JSONObject) obj;

        out.println(jsonObject.get("from_excel"));

        JSONObject obj_new = (JSONObject) jsonObject.get("from_excel");

        JSONArray solution = (JSONArray) obj_new.get("solution");

        Iterator iterator = solution.iterator();
        while (iterator.hasNext()) {
            out.println(iterator.next());
        }



но где-то допускаю ошибку....

Как правильно разобрать этот JSON?

Получилось разобрать код с библиотекой underscore-lodash :
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
import com.github.underscore.lodash.$;
import com.github.underscore.Function1;
import java.util.*;

        String json =
"{"
+ "  \"from_excel\":["
+ "    {"
+ "      \"solution\":\"Fisrt\","
+ "      \"num\":\"1\""
+ "    },"
+ "    {"
+ "      \"solution\":\"Second\","
+ "      \"num\":\"2\""
+ "    },"
+ "    {"
+ "      \"solution\":\"third\","
+ "      \"num\":\"3\""
+ "    },"
+ "    {"
+ "      \"solution\":\"fourth\","
+ "      \"num\":\"4\""
+ "    },"
+ "    {"
+ "      \"solution\":\"fifth\","
+ "      \"num\":\"5\""
+ "    }"
+ "  ]"
+ "}";
        List<Map<String, Object>> fromExcelData = (List<Map<String, Object>>) $.get(
            (Map<String, Object>) $.fromJson(json), "from_excel");
        assertEquals("[{solution=Fisrt, num=1}, {solution=Second, num=2}, {solution=third, num=3}, "
            + "{solution=fourth, num=4}, {solution=fifth, num=5}]", fromExcelData.toString());
        List<String> solutions = $.map(fromExcelData, new Function1<Map<String, Object>, String>() {
            public String apply(Map<String, Object> item) {
                return (String) item.get("solution");
            }
        });
        assertEquals("[Fisrt, Second, third, fourth, fifth]", solutions.toString());



С уважением, Валентин
...
Рейтинг: 0 / 0
26.09.2016, 19:37
    #39315900
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно разобрать JSON (org.json.simple.*)?
drnoНа вот этой строке
Код: java
1.
JSONObject obj_new = (JSONObject) jsonObject.get("from_excel");



возникает ошибка

java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject

Если посмотреть что такое JSON, например на http://www.json.org/ , то можно увидеть, что там всего-то две основных сущности: массивы и объекты. И они считаются настолько разными сущностями, что их нельзя приводить один к другому. Что, собственно, в библиотеке и реализовано (ни разу ей не пользовался, честно говоря).

В примере "from_excel" -- массив, а Вы его к объекту привести пытаетесь. Вот и облом. Все честно.
...
Рейтинг: 0 / 0
30.09.2016, 20:59
    #39318967
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно разобрать JSON (org.json.simple.*)?
В Яве JSON как-то спецово разбирать надо?? O_o
...
Рейтинг: 0 / 0
01.10.2016, 13:41
    #39319093
natanabrahamjr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно разобрать JSON (org.json.simple.*)?
Monochromatique,

если очень хочется изобрести велисапед - то конечно да.
...
Рейтинг: 0 / 0
02.10.2016, 19:12
    #39319269
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно разобрать JSON (org.json.simple.*)?
Хе-хе, зацените разбор ЖСОНа на КоффеСкрипте (который кстати слабей чем например Руби / Еликсир).

Код: javascript
1.
console.log(solution, num) for {solution, num} in json.from_excel
...
Рейтинг: 0 / 0
02.10.2016, 22:49
    #39319304
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно разобрать JSON (org.json.simple.*)?
privateХе-хе, зацените разбор ЖСОНа на КоффеСкрипте (который кстати слабей чем например Руби / Еликсир).

Заценил. Вам захотелось поделиться скромными компьютерными знаниями, хоть они и не имеют никакого отношения к обсуждаемой теме.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно разобрать JSON (org.json.simple.*)? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]