json-lib가 json 형식의 문자열을 자바 대상으로 바꾸는 실례

json 형식 문자열의 날짜는'yyy-MM-dd HH:mm:ss'형식입니다. 일반적인 대상에 따라 변환되면 현재 시스템 시간으로 해석됩니다.

JSONObject json = JSONObject.fromObject(data); 
Dispatchplan dp = (Dispatchplan)JSONObject.toBean(json, Dispatchplan.class); 

원인 JSON Object가 날짜 형식을 인식하지 못할 수 있습니다. 다음과 같은 수정을 하면 해결됩니다.

Dispatchplan dp = new Dispatchplan(); 
JSONObject json = JSONObject.fromObject(data); 
String[] dateFormats = new String[] {"yyyy-MM-dd HH:mm:ss"};  
JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));     
dp = (Dispatchplan)JSONObject.toBean(json, Dispatchplan.class); 

다음 문제를 논의해 보겠습니다.
복잡한 유형의 대상을 바꿀 때 주의해야 할 점이 있다.
예는 다음과 같습니다.

public class A {
 private List<B> list;

 public List<B> getList() {
  return list;
 }

 public void setList(List<B> list) {
  this.list = list;
 }

 public static void main(String[] args) {
  JSONObject json = JSONObject.fromObject("{list:[{name:'Tom',age:999}]}");
  A j = (A) JSONObject.toBean(json, A.class);
  System.out.println(j);
 }
 }

 class B {
 private int age;
 private String name;

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }
 }

실행 후 A 객체의 리스트에 B 객체가 아닌 Morph Dyna Bean이 담겼다고요?어떻게 json 대상을 직접 필요한 bean 대상으로 봉인합니까?
답은 다음과 같습니다.
너는 JSON Object에 있어야 한다.toBean 때list의 원소 유형을 매개 변수로 전송합니다.코드는 아래와 같으니, 너는 틀림없이 이해할 수 있을 것이다

Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("list", B.class);
A j = (A) JSONObject.toBean(json, A.class,classMap);
이상의 이 json-lib는 json 형식의 문자열을 자바 대상으로 전환시킨 실례는 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.

좋은 웹페이지 즐겨찾기