예를 들어 Java의 JSON 라이브러리 GSON의 기본 사용법을 설명합니다.

5100 단어 JavaGSON
GSON이라는 자바 라이브러리는 자바 대상을 JSON으로 변환할 수도 있고, JSON 문자열을 같은 자바 대상으로 변환할 수도 있다.Gson은 소스 코드가 없는 모든 복잡한 Java 객체를 지원합니다.
다른 json 해석 라이브러리와 json-lib;Jackson;com.alibaba.fastjson
편집자는 여전히 Google의 Gson을 좋아한다.
1. 장면 사용:
java 대상과 json 문자열의 상호 변환;로그 출력.
예:

Logger logger = Logger.getLogger(CommonAction.class);
Gson g = new Gson();
logger.info(“return:”+g.toJson(map)); 
2. 사용 예:
1. 기초용법 toJson
toJason () 메서드는 객체를 Json 문자열로 변환합니다.

Gson gson = new Gson();
List persons = new ArrayList();
String str = gson.toJson(persons); 
2. 기본 사용법: fromJson()
Gson은 Json 문자열에서 자바 실체로 전환하는 방법을fromJson () 방법을 제공합니다.
예를 들어 json 문자열은 다음과 같습니다.

[{“name”:”name0”,”age”:0}]
다음을 수행합니다.

Person person = gson.fromJson(str, Person.class); 
두 개의 매개 변수를 제공합니다. 각각 json 문자열과 변환할 대상의 형식입니다.
3. 유니코드 전환 피하기
예를 들어 {'s':'\u003c'} 간단하게 출력하고 싶습니다. {'s':'<'} 해결 방안: HTML escaping을 비활성화하기만 하면 됩니다.Gson gson = new

GsonBuilder().disableHtmlEscaping().create(); 
4. 일부 필드 제외
만약 하나의 클래스 A에 필드field1이 포함되어 있다면, 그 부류에도 필드field1이 포함되어 있다면, A 대상 toJson이 있을 때declares multiple JSON fieldsnamed field1이 발생합니다.해결 방안 1: 클래스 A에서 필드 filed1을 제거합니다.해결 방안 2: Json의 @Expose 메모를 사용하여 A클래스 MessageText에서 인쇄해야 하는 필드 filed1에 메모 @Expose를 추가합니다.그러면 부류에 주석이 없는field1은 배제됩니다.

Gson g = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); 
5. 속성 이름 바꾸기
3. 사용 예:

import java.lang.reflect.Type;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.reflect.TypeToken;


public class GSonDemo {
 public static void main(String[] args) {
// Gson gson = new Gson();
 // 
 Gson gson = new GsonBuilder().registerTypeAdapter(Timestamp.class, new TimestampTypeAdapter()).setDateFormat("yyyy-MM-dd HH:mm:ss").create();
 List<Person> persons = new ArrayList<Person>();
 for (int i = 0; i < 10; i++) {
    Person p = new Person();
    p.setName("name" + i);
    p.setAge(i * 5);
    p.setInsertTime(new Timestamp(System.currentTimeMillis()));
    persons.add(p);
 }
 String str = gson.toJson(persons);
 System.out.println(str);
 
 List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());
 for(int i = 0; i < ps.size() ; i++)
 {
    Person p = ps.get(i);
    System.out.println(p.toString());
 }
 
 System.out.println(new Timestamp(System.currentTimeMillis()));
 }
}

class Person {
 private String name;
 private int age;
 private Timestamp insertTime;

 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 Timestamp getInsertTime() {
 return insertTime;
 }

 public void setInsertTime(Timestamp insertTime) {
 this.insertTime = insertTime;
 }

 @Override
 public String toString() {
 return name + "\t" + age + "\t" + insertTime;
 }
}

// , 
class TimestampTypeAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp> {
  public JsonElement serialize(Timestamp src, Type arg1, JsonSerializationContext arg2) {
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
    String dateFormatAsString = format.format(new Date(src.getTime()));
    return new JsonPrimitive(dateFormatAsString);
  }

  public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
    if (!(json instanceof JsonPrimitive)) {
      throw new JsonParseException("The date should be a string value");
    }

    try {
      DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
      Date date = (Date) format.parse(json.getAsString());
      return new Timestamp(date.getTime());
    } catch (Exception e) {
      throw new JsonParseException(e);
    }
  }

}

좋은 웹페이지 즐겨찾기