Как распарсить такой код?
{
"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);
});
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как средствами IDE сменить версию всех проектов, дочерних от корневого? Есть maven команда, которая это делает из консоли (чуть позже её добавлю,...
Как уменьшить расстояние между дивами? чтоб было, как на картинке?
Есть в макете такой элементОднако я уже второй день ломаю голову и никак не могу придумать как такое можно релизовать, работая с бутстрапом