JSR-367: как связать простой json с объектом и извлечь данные
Как связать json
файл в объект. Здесь я использую API JSR-367 для реализации.
Файл JSON выглядит так
{
"Details": [
{
"age": 27,
"gender": "Male",
"name": "John"
},
{
"age": 27,
"gender": "Male",
"name": "Max"
},
{
"age": 27,
"gender": "FeMale",
"name": "esh"
}
]
}
Для вышеупомянутого json я создал два класса Binding,
Это для объектов массива, которые представлены в json
,
1.
public class Details
{
private String name;
private int age;
private String gender;
private long phoneNumber;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public long getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(long phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
и это для массива деталей
2)
public class Root
{
private Details[] details;
public Details[] getDetails() {
return members;
}
}
Это основной класс для связывания классов из json
файл в объект
public class TestJsonB
{
static final String JSON_FILE = "/media/Resources/Details.json";
public static void main(String[] args) throws IOException
{
String content = new String(Files.readAllBytes(Paths.get(JSON_FILE)));
Jsonb jsonB = JsonbBuilder.create();
Root root = jsonB.fromJson(content,Root.class);
Details[] details = root.getDetails();
System.out.println(details);//null printing
}
}
Помогите мне написать обязательные классы для данного json
файл.
1 ответ
Пожалуйста, проверьте это решение может быть полезным.
Я сделал несколько изменений в вашем Root.java
package com.test;
import java.util.ArrayList;
/**
*
* @author Ravi P
*/
public class Root {
ArrayList<Details> details;
public ArrayList<Details> getDetails() {
return details;
}
public void setDetails( ArrayList<Details> details ) {
this.details = details;
}
}
Основной Java-класс
package com.test;
import java.nio.file.Files;
import java.nio.file.Paths;
import javax.json.bind.Jsonb;
import javax.json.bind.JsonbBuilder;
/**
*
* @author Ravi Palla
*/
public class Test {
static final String JSON_FILE = "C:\\tmp\\Details.json";
public static void main( String[] args ) {
try {
String content = new String( Files.readAllBytes( Paths.get( JSON_FILE ) ) );
Jsonb jsonb = JsonbBuilder.create();
Root root = jsonb.fromJson( content, Root.class );
Details[] details = root.getDetails().toArray( new Details[ root.getDetails().size() ] );
for ( Details memberDetails : details ) {
System.out.print( "name: " + memberDetails.getName() + ", " );
System.out.print( "age: " + memberDetails.getAge() + ", " );
System.out.println( "gender: " + memberDetails.getGender() );
}
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
Выход:
name: John, age: 27, gender: Male
name: Max, age: 27, gender: Male
name: esh, age: 27, gender: FeMale