각종 JSON 기술 비교(Json-lib, 잭슨, Gson,Fastjson)
13325 단어 json
2. Google의 Gson 패키지 사용 프로필Gson 클래스: json을 분석하는 가장 기초적인 도구 클래스인 Json Parser 클래스: 해상도는 JSON에서 Json Elements까지의 해석 트리인 Json Element 클래스: 하나의 클래스를 대표하는 JSON 요소인 Json Object 클래스: JSON 대상 유형인 Json Array 클래스: Json Object 그룹 TypeToken 클래스: type을 만드는 데 사용되며 일반 List>(1)maven보다 com에 의존합니다.google.code.gson gson 2.2.4 (3)bean 변환 json
Gson gson = new Gson();
String json = gson.toJson(obj);
//obj
(4) json 변환 bean
Gson gson = new Gson();
String json = "{\"id\":\"2\",\"name\":\"Json \"}";
Book book = gson.fromJson(json, Book.class);
(5) json은 복잡한 bean을 변환한다. 예를 들어 List,Set은 json을 복잡한 유형의 bean으로 변환하려면 TypeToken을 사용해야 한다.
Gson gson = new Gson();
String json = "[{\"id\":\"1\",\"name\":\"Json \"},{\"id\":\"2\",\"name\":\"java \"}]";
// json List
List list = gson.fromJson(json,new TypeToken() {}.getType());
// json Set
Set set = gson.fromJson(json,new TypeToken() {}.getType());
(6) json 대상을 통해 json 및 일부 json 도구를 직접 조작하는 a) Json 포맷
String json = "[{\"id\":\"1\",\"name\":\"Json \"},{\"id\":\"2\",\"name\":\"java \"}]";
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(json);
json = gson.toJson(je);
b) 문자열이 json인지 아닌지를 판단하고 포착된 이상을 통해 json인지 판단한다
String json = "[{\"id\":\"1\",\"name\":\"Json \"},{\"id\":\"2\",\"name\":\"java \"}]";
boolean jsonFlag;
try {
new JsonParser().parse(str).getAsJsonObject();
jsonFlag = true;
} catch (Exception e) {
jsonFlag = false;
}
c) json 열에서 속성 가져오기
String json = "{\"id\":\"1\",\"name\":\"Json \"}";
String propertyName = 'id';
String propertyValue = "";
try {
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
propertyValue = jsonObj.get(propertyName).toString();
} catch (Exception e) {
propertyValue = null;
}
d) json의 속성 제거
String json = "{\"id\":\"1\",\"name\":\"Json \"}";
String propertyName = 'id';
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.remove(propertyName);
json = jsonObj.toString();
e) json에 속성 추가
String json = "{\"id\":\"1\",\"name\":\"Json \"}";
String propertyName = 'desc';
Object propertyValue = "json ";
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue));
json = jsonObj.toString();
f) json의 속성 수정
String json = "{\"id\":\"1\",\"name\":\"Json \"}";
String propertyName = 'name';
Object propertyValue = "json ";
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.remove(propertyName);
jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue));
json = jsonObj.toString();
g) json에 속성이 있는지 여부 판단
String json = "{\"id\":\"1\",\"name\":\"Json \"}";
String propertyName = 'name';
boolean isContains = false ;
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
isContains = jsonObj.has(propertyName);
h) json의 날짜 형식 처리
GsonBuilder builder = new GsonBuilder();
builder.setDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Gson gson = builder.create();
그리고 gson 대상을 사용하여 json 처리를 하고 날짜Date 클래스의 대상이 나타나면 설정된 형식에 따라 처리합니다 i) json에서 Html의 전의인 Gson gson = new Gson ();이 대상은 기본적으로 Html에 대한 전의를 진행하는데, 전의를 원하지 않으면 아래의 방법을 사용합니다
GsonBuilder builder = new GsonBuilder();
builder.disableHtmlEscaping();
Gson gson = builder.create();
3. 알리바바의 FastJson 가방 사용 프로필.(1)마벤트는com에 의존한다.alibaba fastjson 1.1.22 (2) 기초 변환 클래스와 (3) bean 변환 json 대상을 포맷된 json으로 변환
JSON.toJSONString(obj,true);
대상을 비포맷 json으로 변환하기
JSON.toJSONString(obj,false);
obj 디자인 대상은 복잡한 유형의 변환에 대해 중복된 인용이 json열로 바뀐 후 json열에 인용된 문자가 나타납니다. 예를 들어 $ref ":"$[0].books[1]
Student stu = new Student();
Set books= new HashSet();
Book book = new Book();
books.add(book);
stu.setBooks(books);
List list = new ArrayList();
for(int i=0;i<5;i++)
list.add(stu);
String json = JSON.toJSONString(list,true);
(4) json 변환 bean
String json = "{\"id\":\"2\",\"name\":\"Json \"}";
Book book = JSON.parseObject(json, Book.class);
(5) json 변환 복잡한 bean, 예를 들어 List, Map
String json = "[{\"id\":\"1\",\"name\":\"Json \"},{\"id\":\"2\",\"name\":\"java \"}]";
// json List
List list = JSON.parseObject(json,new TypeReference(){});
// json Set
Set set = JSON.parseObject(json,new TypeReference(){});
(6) json 대상을 통해 json a를 직접 조작) json 열에서 속성 가져오기
String propertyName = 'id';
String propertyValue = "";
String json = "{\"id\":\"1\",\"name\":\"Json \"}";
JSONObject obj = JSON.parseObject(json);
propertyValue = obj.get(propertyName));
b) json의 속성 제거
String propertyName = 'id';
String propertyValue = "";
String json = "{\"id\":\"1\",\"name\":\"Json \"}";
JSONObject obj = JSON.parseObject(json);
Set set = obj.keySet();
propertyValue = set.remove(propertyName);
json = obj.toString();
c) json에 속성 추가
String propertyName = 'desc';
Object propertyValue = "json ";
String json = "{\"id\":\"1\",\"name\":\"Json \"}";
JSONObject obj = JSON.parseObject(json);
obj.put(propertyName, JSON.toJSONString(propertyValue));
json = obj.toString();
d) json의 속성 수정
String propertyName = 'name';
Object propertyValue = "json ";
String json = "{\"id\":\"1\",\"name\":\"Json \"}";
JSONObject obj = JSON.parseObject(json);
Set set = obj.keySet();
if(set.contains(propertyName))
obj.put(propertyName, JSON.toJSONString(propertyValue));
json = obj.toString();
e) json에 속성이 있는지 여부 판단
String propertyName = 'name';
boolean isContain = false;
String json = "{\"id\":\"1\",\"name\":\"Json \"}";
JSONObject obj = JSON.parseObject(json);
Set set = obj.keySet();
isContain = set.contains(propertyName);
f) json의 날짜 형식 처리
Object obj = new Date();
String json = JSON.toJSONStringWithDateFormat(obj, "yyyy-MM-dd HH:mm:ss.SSS");
JSON을 사용합니다.JSONstringWithDateFormat, 이 방법은 설정된 날짜 형식으로 날짜를 변환할 수 있습니다. 셋째, json-lib 패키지의 사용 설명입니다.(1) 마벤트는 넷에 의존한다.sf.json-lib json-lib jdk15 2.2.2 commons-beanutils commons-beanutils 1.8.3 commons-collections commons-collections 3.2 commons-lang commons-lang 2.6 commons-logging commons-logging 1.1.1 net.sf.ezmorph ezmorph 1.0.6 (2) 기본 변환 클래스와 (3) bean 변환 json a) 클래스를 Json으로 변환하고 obj는 일반적인 대상이지 List, Map의 대상이 아니다
String json = JSONObject.fromObject(obj).toString();
b) List, Map을 Json으로 변환
String json = JSONArray.fromObject(list).toString();
String json = JSONArray.fromObject(map).toString();
(4) json 변환 bean
String json = "{\"id\":\"1\",\"name\":\"Json \"}";
JSONObject jsonObj = JSONObject.fromObject(json);
Book book = (Book)JSONObject.toBean(jsonObj,Book.class);
(5) json 변환List, 복잡한 유형의 변환에 문제가 발생할 수 있음
String json = "[{\"id\":\"1\",\"name\":\"Json \"},{\"id\":\"2\",\"name\":\"Java \"}]";
JSONArray jsonArray = JSONArray.fromObject(json);
JSONObject jsonObject;
T bean;
int size = jsonArray.size();
List list = new ArrayList(size);
for (int i = 0; i < size; i++) {
jsonObject = jsonArray.getJSONObject(i);
bean = (T) JSONObject.toBean(jsonObject, beanClass);
list.add(bean);
}
(6) json 변환Map
String jsonString = "{\"id\":\"1\",\"name\":\"Json \"}";
JSONObject jsonObject = JSONObject.fromObject(jsonString);
Iterator keyIter = jsonObject.keys();
String key;
Object value;
Map valueMap = new HashMap();
while (keyIter.hasNext()) {
key = (String) keyIter.next();
value = jsonObject.get(key).toString();
valueMap.put(key, value);
}
(7) json은 날짜에 대한 조작이 비교적 복잡하기 때문에 JsonConfig을 사용해야 한다. Gson과FastJson보다 변환된 인터페이스 구현 클래스를 만들고 지정한 형식의 날짜로 변환하는 것이 더 번거롭다.
class DateJsonValueProcessor implements JsonValueProcessor{
public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS";
private DateFormat dateFormat;
public DateJsonValueProcessor(String datePattern) {
try {
dateFormat = new SimpleDateFormat(datePattern);
} catch (Exception ex) {
dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
}
}
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return process(value);
}
public Object processObjectValue(String key, Object value,
JsonConfig jsonConfig) {
return process(value);
}
private Object process(Object value) {
return dateFormat.format[1];
Map birthDays = new HashMap();
birthDays.put("WolfKing",new Date());
JSONObject jsonObject = JSONObject.fromObject(birthDays, jsonConfig);
String json = jsonObject.toString();
System.out.println(json);
}
}
(8) jsonObject json 작업 및 처리 a) json 열에서 속성 가져오기
String jsonString = "{\"id\":\"1\",\"name\":\"Json \"}";
Object key = "name";
Object value = null;
JSONObject jsonObject = JSONObject.fromObject(jsonString);
value = jsonObject.get(key);
jsonString = jsonObject.toString();
b) json의 속성 제거
String jsonString = "{\"id\":\"1\",\"name\":\"Json \"}";
Object key = "name";
Object value = null;
JSONObject jsonObject = JSONObject.fromObject(jsonString);
value = jsonObject.remove(key);
jsonString = jsonObject.toString();
c) json에 속성 추가 및 수정
String jsonString = "{\"id\":\"1\",\"name\":\"Json \"}";
Object key = "desc";
Object value = "json ";
JSONObject jsonObject = JSONObject.fromObject(jsonString);
jsonObject.put(key,value);
jsonString = jsonObject.toString();
d) json에 속성이 있는지 여부 판단
String jsonString = "{\"id\":\"1\",\"name\":\"Json \"}";
boolean containFlag = false;
Object key = "desc";
JSONObject jsonObject = JSONObject.fromObject(jsonString);
containFlag = jsonObject.containsKey(key);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콘텐츠 SaaS | JSON 스키마 양식 빌더Bloomreach Content를 위한 JSON Form Builder 맞춤형 통합을 개발합니다. 최근 Bloomreach Content SaaS는 내장 앱 프레임워크를 사용하여 혁신적인 콘텐츠 유형 필드를 구축할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.