FastJson, 잭슨 사용 강좌.
27074 단어 Java 진급
Gson은 매우 강력한 API로 자바 범용을 지원하고 기존의 JSON과 자바 대상의 전환을 지원하며 대상의 구성원 이름이 JSON의 이름과 일치하기만 하면 된다.Java bean과 JSON에 대해 다른 이름을 사용하려면 @serializedName 주석을 사용하여 JSON과 Java 클래스의 변수를 비추십시오.Gson은 주요 클래스로 fromJson()과 toJson() 방법으로 변환 작업을 하는 것을 드러낸다. 기본적으로 대상을 직접 만들 수도 있고 GsonBuilder 클래스에서 제공하는 실용적인 옵션을 사용하여 변환할 수도 있다. 예를 들어 정연한 인쇄, 필드 이름 변환, 필드 배제, 날짜 포맷 등이다.
public static void objectToJson() {
Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
// Builder
// Gson gson = new GsonBuilder().setPrettyPrinting().create();
Gson gson = new Gson(); //
//toJson Object-->Json
String jsonString = gson.toJson(p);
System.out.println("--------- --------");
System.out.println(jsonString);
//Json --> Object
Person person = gson.fromJson(jsonString, Person.class);
System.out.println("--------- --------");
System.out.println(person.toString());
}
public static void objectsToJson() {
Gson gson = new Gson();
Person person = new Person("zhaokaiqiang", 22,
new Birthday(1992, 1, 19));
ArrayList arrayList = new ArrayList<>();
arrayList.add(person);
arrayList.add(person);
arrayList.add(person);
String jsonString = gson.toJson(arrayList);
System.out.println("--------- --------");
System.out.println(jsonString);
//
Type type = new TypeToken>() {
}.getType();
//
ArrayList persons = gson.fromJson(jsonString, type);
System.out.println("--------- --------");
System.out.println(persons.toString());
}
// key--value
public static String getJsonString() {
Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
JsonElement element = new JsonParser().parse(new Gson().toJson(p));
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name", "zhao");
jsonObject.addProperty("age", 22);
jsonObject.add("person", element);
System.out.println(jsonObject.toString());
return jsonObject.toString();
}
public static void fromJsonString() {
Gson gson = new Gson();
JsonElement jsonElement = new JsonParser().parse(getJsonString());
//JsonObject
JsonObject jsonObject = jsonElement.getAsJsonObject();
//key-->value
JsonElement personElement = jsonObject.get("person");
Person person = gson.fromJson(personElement, Person.class);
JsonElement nameElement = jsonObject.get("name");
String name = nameElement.getAsString();
JsonElement ageElement = jsonObject.get("age");
int age = ageElement.getAsInt();
System.out.println(person);
System.out.println(name);
System.out.println(age);
}
유형 소개: 1.Gson: 이 클래스는 앞에서 이미 사용했습니다. 이것은 우리가 Json의 전환과 해석을 완성하는 주요 클래스입니다. 주로 toJson()과fromJson()이라는 두 가지 방법을 사용합니다.2. JsonObject: 이것은 우리가 Object 형식의 Json 데이터를 구축하는 주요 클래스입니다. 우리는 키와value를 설정할 수 있습니다.3. Json Element: 이것은 Json 요소 클래스입니다. 그 안에 Json Object, Json Array, Json Null 또는 Json Primitive가 있을 수 있습니다.그것 안의 데이터는 단지 하나의 요소로만 볼 수 있으니 주의해라.4. Json Array: 이것은 우리가 Array 형식을 구성하고자 하는 주요 클래스입니다. 우리는 수조에 데이터를 추가할 수 있고 데이터는 질서정연합니다.5. JsonParser: 이것은 Json의 해석기입니다. 주요 역할은 하나의 Json 형식의 문자열을 하나의 JsonElement 대상으로 바꾸는 것입니다.PS:
1) 일반 지원
// Result
Type userType = new TypeToken<Result<User>>(){}.getType();
Result<User> userResult = gson.fromJson(json,userType);
User user = userResult.data;
Type userListType = new TypeToken<Result<List<User>>>(){}.getType();
Result<List<User>> userListResult = gson.fromJson(json,userListType);
List<User> users = userListResult.data;
2. Jackson
잭슨은 3개의 라이브러리로 나뉜다. 1.Core 라이브러리:streaming parser/generator, 즉 흐르는 해석기와 생성기.2. Annotations 라이브러리: Databinding annotations, 메모가 있는 데이터 바인딩 패키지입니다.3. Databind 라이브러리: ObjectMapper, Json Tree Model, 즉 대상 맵, JSON 트리 모델.
먼저 자주 사용하는 몇 가지 기능을 소개합니다. 1.JsonFactory: 이 종류는 잭슨 프로젝트의 주요 공장 방법으로 주로 해상도(예를 들어 JsonParser)와 생성기(예를 들어 JsonGenerator)를 설정하고 구축하는 데 사용된다. 이 공장의 실례는 라인이 안전하고 설정이 있으면 다시 사용할 수 있다.2. JsonGenerator: 이 종류는 주로 Json 포맷의 내용을 생성하는 데 사용되고 우리는 JsonFactory의 방법으로 실례를 생성할 수 있다.3. JsonParser: 이것은 주로 Json 형식의 내용을 읽고 해석 작업을 완성하는 데 사용되는 것으로 우리는 JsonFactory의 방법으로 실례를 생성할 수 있다.4. ObjectMapper: 이 클래스는 자바 대상과 Json 간의 전환을 제공하고 주로 JsonParser와 JsonGenerator 실례를 통해 실제 Json 데이터에 대한 읽기와 쓰기 작업을 완성한다.이 클래스는 ObjectCodec의 하위 클래스로 주요한 실현 세부 사항은 모두 ObjectCodec 안에 있다.그리고 이 클래스는 중복 사용이 가능하기 때문에 일반적으로 이 클래스의 단일 모드를 만들 수 있습니다.
// ObjectMapper
public class JacksonMapper {
private static final ObjectMapper mapper = new ObjectMapper();
private JacksonMapper() {
}
public static ObjectMapper getInstance() {
return mapper;
}
}
// Json
public static String getJsonString(Object object) throws JsonProcessingException {
return JacksonMapper.getInstance().writeValueAsString(object);
}
// Json
public static String getJsonString1(Object object) throws IOException {
ObjectMapper mapper = JacksonMapper.getInstance();
StringWriter sw = new StringWriter(); //StringWriter
JsonGenerator gen = new JsonFactory().createGenerator(sw);
mapper.writeValue(gen, object); // StringWriter
gen.flush();
gen.close();
return sw.toString();
}
//Object --> Json
public static void objectToJson() throws Exception {
Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
System.out.println(getJsonString(p));
}
// List --> Json
public static void objectsToJson() throws Exception {
Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
ArrayList persons = new ArrayList();
persons.add(p);
persons.add(p);
persons.add(p);
System.out.println(getJsonString(persons));
}
// -->Json
public static String createObjectJson() throws Exception {
Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
StringWriter stringWriter = new StringWriter();
//
JsonGenerator jsonGenerator = JacksonMapper.getInstance()
.getFactory().createGenerator(stringWriter);
jsonGenerator.writeStartObject(); //
jsonGenerator.writeStringField("name", "zhaokaiqiang");
jsonGenerator.writeNumberField("age", 22);
jsonGenerator.writeObjectField("person", p);
jsonGenerator.writeEndObject();
jsonGenerator.flush();
jsonGenerator.close();
System.out.println(stringWriter.toString());
return stringWriter.toString();
}
// ( )--> Json
public static void createArrayJson() throws Exception {
Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
StringWriter stringWriter = new StringWriter();
//
JsonGenerator jsonGenerator = JacksonMapper.getInstance()
.getFactory().createGenerator(stringWriter);
jsonGenerator.writeStartArray();
jsonGenerator.writeString("zhaokaiqiang");
jsonGenerator.writeNumber(22);
jsonGenerator.writeObject(p);
jsonGenerator.writeEndArray();
jsonGenerator.flush();
jsonGenerator.close();
System.out.println(stringWriter.toString());
}
//
public static void toObject() throws Exception {
ObjectMapper objectMapper = JacksonMapper.getInstance();
Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
String jsonString = getJsonString(p);
Person person = objectMapper.readValue(jsonString, Person.class);//
System.out.println(person.toString());
}
//
public static void toObjects() throws Exception {
Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
ArrayList persons = new ArrayList<>();
persons.add(p);
persons.add(p);
persons.add(p);
ObjectMapper objectMapper = JacksonMapper.getInstance();
String jsonString = getJsonString(persons);
//
JavaType javaType = getCollectionType(ArrayList.class, Person.class);
ArrayList arrayList = objectMapper.readValue(jsonString, javaType);
System.out.println(arrayList);
}
//List HashMap
public static JavaType getCollectionType(Class> collectionClass, Class>... elementClasses) {
return JacksonMapper.getInstance().getTypeFactory().constructParametricType(collectionClass, elementClasses);
}
//
public static void fromJsons() throws Exception {
String jsonString = createObjectJson();
ObjectMapper objectMapper = JacksonMapper.getInstance();
JsonNode jsonNode = objectMapper.readTree(jsonString);
JsonNode nameNode = jsonNode.get("name");
JsonNode ageNode = jsonNode.get("age");
JsonNode persoNode = jsonNode.get("person");
String personString = persoNode.toString();
Person person = objectMapper.readValue(personString, Person.class);
System.out.println("person=" + person.toString());
System.out.println("age=" + ageNode.asInt());
System.out.println("name=" + nameNode.asText());
}
3. FastJson
자바빈 대상 json 문자열 JSONObject 서로 전환 자바빈 대상 json 문자열 JSONarray 대상 서로 전환 직접 코드
public static final String json_student = "{\"age\":42,\"id\":1,\"male\":true,\"name\":\"Sherlock Holmes\",\"schoolId\":1}";
public static final String json_array = "[{\"age\":42,\"id\":1,\"male\":true,\"name\":\"Sherlock Holmes\",\"schoolId\":1},{\"age\":42,\"id\":2,\"male\":false,\"name\":\"John Watson\",\"schoolId\":1}]";
public static void toJsonString() {
Student student = new Student(1, "Sherlock Holmes", 42, true, 5);
String json = JSON.toJSONString(student);
System.out.println(json);
System.out.println("-------------");
String format_json = JSON.toJSONString(student, true);
System.out.println(format_json);
}
public static void toJsonTest() {
// Student
Student student_s = new Student(1, "Sherlock Holmes", 42, true, 1);
// java bean JSONObject
JSONObject object = (JSONObject) JSON.toJSON(student_s);
//JSONObject , toString() toJSONString()
System.out.println(object + " -- JSONOBject ");
System.out.println(object.toString() + " -- JSONOBject.toString()");
System.out.println(object.toJSONString() + " -- JSONOBject.toJSONString()");
// Student
Student student_j = new Student(2, "John Watson", 42, false, 1);
// Student List
List students = new ArrayList<>();
students.add(student_s);
students.add(student_j);
// List JSONArray
JSONArray array = (JSONArray) JSON.toJSON(students);
//JSONArray , toString() toJSONString()
System.out.println(array + " -- JSONArray ");
System.out.println(array.toString() + " -- JSONArray.toString()");
System.out.println(array.toJSONString() + " -- JSONArray.toJSONString()");
}
public static void parseArray() {
JSONArray array = JSON.parseArray(json_array);
System.out.println(array);
List students = JSON.parseArray(json_array, Student.class);
students.forEach(System.out::println);
}
public static void parseObject() {
// json JSONObject
JSONObject object = JSON.parseObject(json_student);
// JSONObject
System.out.println(object);
// json Student
Student student = JSON.parseObject(json_student, Student.class);
// Student
System.out.println(student.toString());
}
public static void parse() {
// json JSONObect
JSONObject object = (JSONObject) JSON.parse(json_student);
// JSONObject
System.out.println(object);
// json JSONArray
JSONArray array = (JSONArray) JSON.parse(json_array);
// JSONArray
System.out.println(array);
}
public static void jsonObjectTest() {
// Student
Student student = new Student(1, "Sherlock Holmes", 42, true, 1);
// Java Bean JSONObject
JSONObject object = (JSONObject) JSON.toJSON(student);
// JSONObject
System.out.println(object.toString());
// JSONObject age male
String age = object.getString("age");
boolean isMale = object.getBoolean("male");
System.out.println("age : " + age + " , male : " + isMale);
// JSONObject
object.put("action", "fuck");
System.out.println(object.toString());
// JSONObject
Map map = new HashMap<>();
map.put("home", "American");
map.put("school", "harvard");
object.putAll(map);
System.out.println(object.toJSONString());
// JSONObject
object.remove("action");
System.out.println(object);
// JSONObject
System.out.println(object.size());
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
FastJson, 잭슨 사용 강좌.Gson은 매우 강력한 API로 자바 범용을 지원하고 기존의 JSON과 자바 대상의 전환을 지원하며 대상의 구성원 이름이 JSON의 이름과 일치하기만 하면 된다.Java bean과 JSON에 대해 다른 이름을 사용하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.