Jackson-Javaシーケンス化と逆シーケンス化フレームワーク

6552 ワード

前回の記事では、javaでjacksonを用いたシーケンス化と逆シーケンス化について説明しましたが、今日はJacksonがどのようにシーケンス化と逆シーケンス化を行うかについて具体的に説明します.
Customerクラス
public class Customer {
	
	private Long Id;
	private String Username;
	private String Password;
	
	public Long getId() {
		return Id;
	}

	public void setId(Long id) {
		Id = id;
	}

	public String getUsername() {
		return Username;
	}

	public void setUsername(String username) {
		Username = username;
	}

	public String getPassword() {
		return Password;
	}

	public void setPassword(String password) {
		Password = password;
	}	
}
1.エンティティークラス転送json
ObjectMapper objectMapper = new ObjectMapper();
JsonFactory jsonFactory = objectMapper.getJsonFactory();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(System.out, JsonEncoding.UTF8);
Customer customer = new Customer();
customer.setId(1L);
customer.setUsername("justin");
customer.setPassword("1234");
System.out.println("JsonGenerator");
jsonGenerator.writeObject(customer);
System.out.println();
System.out.println("objectMapper");
objectMapper.writeValue(System.out, customer);
出力結果:
JsonGenerator
{"id":1,"username":"justin","password":"1234"}
objectMapper
{"id":1,"username":"justin","password":"1234"}
2)集合をjsonに変換
ObjectMapper objectMapper = new ObjectMapper();
JsonFactory jsonFactory = objectMapper.getJsonFactory();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(System.out, JsonEncoding.UTF8);
List<Customer> list = new ArrayList<Customer>();
Customer customer1 = new Customer();
customer1.setId(1L);
customer1.setUsername("justin1");
customer1.setPassword("1234");
list.add(customer1);
	        
Customer customer2 = new Customer();
customer2.setId(2L);
customer2.setUsername("justin2");
customer2.setPassword("12345");
list.add(customer2);
	        
System.out.println("jsonGenerator list");
//list   JSON   
 jsonGenerator.writeObject(list);
System.out.println();
System.out.println("ObjectMapper2");
// objectMapper    list    JSON   
System.out.println("1###" + objectMapper.writeValueAsString(list));
System.out.print("2###");
//objectMapper list   JSON   
objectMapper.writeValue(System.out, list);
出力結果:
jsonGenerator list
[{"id":1,"username":"justin1","password":"1234"},{"id":2,"username":"justin2","password":"12345"}]
ObjectMapper2
1###[{"id":1,"username":"justin1","password":"1234"},{"id":2,"username":"justin2","password":"12345"}]
2###[{"id":1,"username":"justin1","password":"1234"},{"id":2,"username":"justin2","password":"12345"}]
3)Map回転json
ObjectMapper objectMapper = new ObjectMapper();
JsonFactory jsonFactory = objectMapper.getJsonFactory();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(System.out, JsonEncoding.UTF8);
Customer customer1 = new Customer();
customer1.setId(1L);
customer1.setUsername("justin1");
customer1.setPassword("1234");
	        
Map<String, Object> map = new HashMap<String, Object>();
map.put("account", customer1);
customer1 = new Customer();
customer1.setUsername("du");
customer1.setPassword("1222");
map.put("account2", customer1);
	        
System.out.println("jsonGenerator");
jsonGenerator.writeObject(map);
System.out.println("");
	        
System.out.println("objectMapper");
objectMapper.writeValue(System.out, map);
出力結果:
jsonGenerator
{"account2":{"id":null,"username":"du","password":"1222"},"name":"justin1","account":{"id":1,"username":"justin1","password":"1234"}}
objectMapper
{"account2":{"id":null,"username":"du","password":"1222"},"name":"justin1","account":{"id":1,"username":"justin1","password":"1234"}}
4)Json装Object
ObjectMapper objectMapper = new ObjectMapper();
JsonFactory jsonFactory = objectMapper.getJsonFactory();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(System.out, JsonEncoding.UTF8);
String json = "{\"id\":1,\"username\":\"justin\",\"password\":\"12345\"}";
try {
Customer newcustomer = objectMapper.readValue(json, Customer.class);
	System.out.println(newcustomer.getUsername());
	System.out.println(newcustomer.getPassword());
} catch (JsonParseException e) {
	e.printStackTrace();
} catch (JsonMappingException e) {
	e.printStackTrace();
} catch (IOException e) {
	e.printStackTrace();
}

出力:
justin
12345

5)Json転対象集合
ObjectMapper objectMapper = new ObjectMapper();
JsonFactory jsonFactory = objectMapper.getJsonFactory();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(System.out, JsonEncoding.UTF8);
String json = "[{\"id\":1,\"username\":\"justin\",\"password\":\"12345\"},{\"id\":2,\"username\":\"justin2\",\"password\":\"123456\"}]";
try {
List<LinkedHashMap<String, Object>> customers = objectMapper.readValue(json, List.class);
System.out.println(customers.size());
for (int i = 0; i < customers.size(); i++) {
	Map<String, Object> map = customers.get(i);
	Set<String> set = map.keySet();
	for (Iterator<String> it = set.iterator();it.hasNext();) {
		String key = it.next();
	                    System.out.println(key + ":" + map.get(key));
	}
}
} catch (JsonParseException e) {
	e.printStackTrace();
 } catch (JsonMappingException e) {
	e.printStackTrace();
} catch (IOException e) {
	e.printStackTrace();
}

出力結果:
2
id:1
username:justin
password:12345
id:2
username:justin2
password:123456
まとめ:
jacksonはオブジェクト(オブジェクト集合)とjsonの間の変換を非常に便利にすることができ、これらの例は基本的にすべての応用状況を要約し、伝言交流を歓迎します.