Как распарсить такой код?
{
"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);
});
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости