Как распарсить такой код?
{
"prim1":
{
"age": 100,
"name": "mky100.com",
"messages": [
"msg 100",
"msg 200",
"msg 300"
]
},
"prim2":
{
"age": 90,
"name": "mky90.com",
"messages": [
"msg 90",
"msg 200",
"msg 300"
]
},
"prim3":
{
"age": 80,
"name": "mky80.com",
"messages": [
"msg 80",
"msg 200",
"msg 300"
]
}
}
Пытаюсь так, но выводит ошибки:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class aa {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader("/Users/Katerina/Desktop/Java обучение/aa.json "));
JSONObject jsonObject = (JSONObject) obj;
JSONArray prim = jsonObject.getAsJsonArray("prim1");
for (JSONArray user : prim) {
JSONObject userObject = user.getAsJsonArray();
userObject.get("name");
String name = (String) jsonObject.get("name");
System.out.println(name);
long age = (Long) jsonObject.get("age");
System.out.println(age);
// loop array
JSONArray msg = (JSONArray) jsonObject.get("messages");
Iterator<String> iterator = msg.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("1111");
} catch (IOException e) {
e.printStackTrace();
System.out.println("2222");
} catch (ParseException e) {
e.printStackTrace();
System.out.println("3333");
}
}
}
Ошибки:
/Users/Katerina/Desktop/Java обучение/aa.java:20: error: cannot find symbol
JSONArray prim = jsonObject.getAsJsonArray("prim1");
^
symbol: method getAsJsonArray(String)
location: variable jsonObject of type JSONObject
/Users/Katerina/Desktop/Java обучение/aa.java:21: error: incompatible types
for (JSONArray user : prim) {
^
required: JSONArray
found: Object
/Users/Katerina/Desktop/Java обучение/aa.java:22: error: cannot find symbol
JSONObject userObject = user.getAsJsonArray();
^
symbol: method getAsJsonArray()
location: variable user of type JSONArray
/Users/Katerina/Desktop/Java обучение/aa.java:33: warning: [unchecked] unchecked conversion
Iterator<String> iterator = msg.iterator();
^
required: Iterator<String>
found: Iterator
3 errors
1 warning
Очевидно, это ошибка компиляции. Видимо не та библиотека или версия.
С библиотекой json-simple
:
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
Это делается следующим образом:
String filename = "file.json";
try (BufferedReader reader = Files.newBufferedReader(filename)) {
JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse(reader);
((Map<String, JSONObject>) jsonObject)
.entrySet()
.forEach(entry -> {
String key = entry.getKey();
JSONObject people = entry.getValue();
System.out.println(key);
System.out.println(people.get("age"));
System.out.println(people.get("name"));
JSONArray messages = (JSONArray) people.get("messages");
messages.forEach(System.out::println);
});
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как средствами IDE сменить версию всех проектов, дочерних от корневого? Есть maven команда, которая это делает из консоли (чуть позже её добавлю,...
Как уменьшить расстояние между дивами? чтоб было, как на картинке?
Есть в макете такой элементОднако я уже второй день ломаю голову и никак не могу придумать как такое можно релизовать, работая с бутстрапом