이 기사에서는 json 데이터(직렬화 및 역직렬화 데이터)를 생성하고 구문 분석하기 위해 Java에서 fastjson을 주로 소개합니다. 관심 있는 친구들은 이를 참고할 수 있습니다.
이 글에서는 2가지 사항을 설명합니다:
1. Fastjson은 json 데이터를 생성하고 구문 분석합니다
(예: 4가지 일반적인 유형) :JavaBean,List
2. 안드로이드 프로그램을 통해 fastjson의 사용법을 테스트합니다.
fastjson 소개:
Fastjson은 Java 언어로 작성된 고성능의 완전한 JSON 라이브러리입니다. fastjson은 독창적인 알고리즘을 사용하여 한때 가장 빠르다고 알려졌던 jackson을 포함한 모든 json 라이브러리를 능가하여 구문 분석 속도를 극도로 높였습니다. 또한 Google의 바이너리 프로토콜 프로토콜 buf를 능가합니다. Fastjson은 //m.sbmmt.com/의 표준을 완벽하게 지원하며 공식 웹사이트에 포함된 참조 구현 중 하나이기도 합니다. 다양한 JDK 유형이 지원됩니다. 기본 유형, JavaBean, Collection, Map, Enum, generics 등을 포함합니다. JDK 5, JDK 6, Android, Alibaba Cloud 휴대폰 및 기타 환경을 지원합니다.
1. fastjson은 json 문자열을 생성합니다(JavaBean,List
String jsonStrng = JSON.toJSONString(object);
2. fastjson은 json 문자열을 네 가지 유형으로 구문 분석합니다.
1. 🎜>
Person person = JSON.parseObject(jsonString, Person.class);
2. 목록
List<Person> listPerson =JSON.parseArray(jsonString, Person.class);
3. 🎜>
List<String> listString = JSON.parseArray(jsonString, String.class);
4. List
코드 복사코드는 다음과 같습니다.
List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});
(참고: 여기서는 fastjson 반사 메커니즘이 gson보다 더 정확하다는 것을 볼 수 있습니다. fastjson 반사를 통해 id = 1001은 여전히 id = 1001이고, gson 반사를 통한 결과는 id =1001.0입니다.
JSON 파서 fastjson(Alibaba에서 제작, 버전 1.1.26), JSONObject가 {"JACKIE_ZHANG":"Jacky Cheung","ANDY_LAU":"Andy Lau","LIMING":"Ling으로 정의된 경우 Ming","Aaron_Kwok":" Aaron Kwok"}, 값을 읽을 때 KEY 순서가 잘못되었습니다. 테스트 코드:import comalibabafastjsonJSONObject; /** * Created by wangzhenfei on 14-4- */ public class FastJsonTest { public static void main(String[] args){ String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ; //做5次测试 for(int i=0,j=5;i<j;i++) { JSONObject jsonObject = JSONObjectparseObject(jsonStr) ; for(javautilMapEntry<String,Object> entry:jsonObjectentrySet()){ Systemoutprint(entrygetKey()+"-"+entrygetValue()+"\t"); } Systemoutprintln();//用来换行 } } }
실행 중 결과:
LIMING-黎明 Aaron_Kwok-郭富城JACKIE_ZHANG-张学友ANDY_LAU-刘德华 Aaron_Kwok-郭富城 ANDY_LAU-刘德华LIMING-黎明JACKIE_ZHANG-张学友 Aaron_Kwok-郭富城 JACKIE_ZHANG-张学友ANDY_LAU-刘德华LIMING-黎明 LIMING-黎明 ANDY_LAU-刘德华JACKIE_ZHANG-张学友Aaron_Kwok-郭富城 JACKIE_ZHANG-张学友 LIMING-黎明ANDY_LAU-刘德华Aaron_Kwok-郭富城
해결 방법: JSONArray로 정의, 코드는 다음과 같습니다.
import comalibabafastjsonJSONArray; /** * Created by wangzhenfei on 14-4- */ public class FastJsonTest { public static void main(String[] args){ String jsonStr = "[{\"JACKIE_ZHANG\":\"张学友\"},{\"ANDY_LAU\":\"刘德华\"},{\"LIMING\":\"黎明\"},{\"Aaron_Kwok\":\"郭富城\"}]" ; //做5次测试 for(int i=0,j=5;i<j;i++) { JSONArray jsonArray = JSONArrayparseArray(jsonStr); for(int k=0;k<jsonArraysize();k++){ Systemoutprint(jsonArrayget(k) + "\t"); } Systemoutprintln();//用来换行 } } }
실행 결과는 다음과 같습니다.
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} {"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} {"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} {"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} {"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}
JSONArray 대신 JSONObject로 정의하려면 다른 JSON 파서를 선택할 수 있습니다. 개인적으로 Google의 파서를 사용하는 것이 좋습니다. gson.gson의 문서는 확실히 fastjson보다 훨씬 좋습니다(여기에서 Ali Baba와 Google의 격차를 볼 수 있습니다):
import comgooglegsonJsonElement; import comgooglegsonJsonObject; import comgooglegsonJsonParser; /** * Created by wangzhenfei on 14-4- */ public class FastJsonTest { public static void main(String[] args){ String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ; //做5次测试 for(int i=0,j=5;i<j;i++) { JsonObject jsonObject = (JsonObject) new JsonParser()parse(jsonStr); for(javautilMapEntry<String,JsonElement> entry:jsonObjectentrySet()){ Systemoutprint(entrygetKey()+"-"+entrygetValue()+"\t"); } Systemoutprintln();//用来换行 } } }
실행 결과:
아아아아위 내용은 json 데이터(직렬화 및 역직렬화 데이터)를 생성하고 구문 분석하기 위한 java의 fastjson에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!