A、JSONの構文解析ライブラリ
FASTJSON:アリババは、パフォーマンスが非常に良いですが、JSONライブラリを開発しました。
プロジェクトのMaven POMファイルで、次の依存性
<依存> <groupIdを> com.alibaba </ groupIdを> <たartifactId> fastjson </たartifactId> <バージョン> 1.2.47 </バージョン> </依存関係>
第二に、符号化および復号化
1、コーディング
輸入com.alibaba.fastjson.JSONObject; 輸入java.util.Arrays。 輸入はjava.util.List; パブリック クラスJsonTest1 { 公共 静的 ボイドメイン(文字列[]引数){ JSONObjectオブジェクト = 新しいJSONObject()。 object.put( "文字列"、 "文字列" ); object.put( "整数"、1 )。 object.put(「ブール」真)。 一覧 <整数>リスト=は、Arrays.asList(1,2,3,4,5 ); object.put( "リスト" 、リスト)。ヌル、ヌル); System.out.println(オブジェクト)。 } }
結果
{ "整数":1、 "ブール":真、 "文字列": "文字列"、 "リスト":[1,2,3,4,5]}
図2に示すように、復号化
輸入com.alibaba.fastjson.JSON; 輸入com.alibaba.fastjson.JSONArray; 輸入com.alibaba.fastjson.JSONObject; 輸入java.lang.annotation.ElementType; 輸入java.util.Arrays。 輸入はjava.util.List; パブリック クラスJsonTest2 { 公共 静的 ボイドメイン(文字列[]引数){ JSONObjectオブジェクト = JSONObject.parseObject( "{\" \ブール":真、\"文字列\ "\"文字列\」、\ "リスト\": [1,2,3]、\ "INT \":2、\ "テスト\":\ "\"}」)。 // ブール ブールBL = object.getBooleanValue( "ブール" ); System.out.println(BL)。 // 文字 列の文字列= object.getString( "文字列" ); System.out.println(文字列); // リストの 一覧LTS = JSON.parseArray(。object.getJSONArray( "リスト")toJSONString()、整数。クラス); System.out.println(LTS)。 用(オブジェクトI:LTS){ のSystem.out.println(I)。 } // 整数 整数整数= object.getIntValue( "2" )。 System.out.println(整数)。 // 没有这个キー 文字列AA = object.getString( "AA" ); System.out.println(AA)。 文字列BB=(文字列)object.get( "AA" )。 System.out.println(BB)。 // 对应的キー没有値 文字列DD = object.getString( "試験" )。 System.out.println(DD)。 文字列CC = object.get( "試験" ).toString(); System.out.println(CC)。 } }
結果
真の スタイル [ 1、2、3 ] 1つの 2 3 0 ヌルヌル
最後の二つの値は「」です
三、JSON文字列と各変換
https://www.runoob.com/w3cnote/java-json-instro.html
第四に、JSON.toJSONStringの問題()の
オリジナル:https://blog.csdn.net/weixin_43228497/article/details/87975659
4.1、最初のケース:
アクティビティアクティビティ=新しい新しい活動();
文字列JSON.toJSONString STR =(活性);
この場合、STRは、{}である
第二の場合:
リスト一覧新規新しい=のArrayList();
文字列= JSON STR。 (リスト)toJSONString;
この場合、STRは、[]である
第三の場合:
文字列= JSON.toJSONString STR(NULL);
ここで、strがnullであります
、JSON.toJSONString()は何もないリストが[]?が続いたときに回避するための方法を4.2、
IF(CollectionUtils.isEmpty(activityTypeDTOS)){//その上で、この判決を追加
五、JSON.toJSON()。toString()メソッドとJSON.toJSONString()と同じ結果
輸入com.alibaba.fastjson.JSON; 輸入com..socialsecurity.domain.model.ABA1Entity。 輸入はjava.util.ArrayList; パブリック クラスJsonTest { 公共 静的 ボイドメイン(文字列[]引数){ ABA1Entity aba1Entity1 = 新しいABA1Entity()。 aba1Entity1.setAac002( "2" ); ABA1Entity aba1Entity2 = 新しいABA1Entity(); aba1Entity2.setAac002( "3" )。 一覧 <ABA1Entity> aba1EntityList = 新しい ArrayListを<> (); aba1EntityList.add(aba1Entity1)。 aba1EntityList.add(aba1Entity2)。 文字列JSON = JSON.toJSON(aba1EntityList).toString(); ストリングjson1 = JSON.toJSONString(aba1EntityList)。 System.out.println(JSON)。 System.out.println(json1)。 } }
結果
[{ "aac002": "2"}、{ "aac002": "3" }]
[{ "aac002": "2"}、{ "aac002": "3"}]
六、StringEscapeUtils.unescapeJava(jsonStr)削除エスケープ
輸入com.alibaba.fastjson.JSON; 輸入com.alibaba.fastjson.JSONArray; 輸入com.alibaba.fastjson.JSONObject; 輸入com.socialsecurity.domain.model.Person2; 輸入groovy.json.StringEscapeUtils。 輸入java.util.HashMapを; 輸入はjava.util.List; 輸入java.util.Map; パブリック クラスのテスト{ 公共 静的 ボイドメイン(文字列[]引数){ リストデータ = NULL ; 地図 <文字列、文字列>このresultMap = 新しい HashMapの<> (); JSONArray objArray = 新しいJSONArray(); resultMap.put( "年齢"、 "AA" )。 resultMap.put( "名前"、 "BB" ); ストリングjsonObject = JSON.toJSONString(このresultMap)。 objArray.add(jsonObject)。 System.out.println( "objArray:" + objArray)。 データ = objArray。 文字列JSON = JSON.toJSON(データ).toString(); System.out.println(JSON)。 もし(data.size()== 1 ){ JSONObject json3 = JSONObject.parseObject((文字列)data.get(0)); ストリングjsonStr = JSON.toJSON(json3).toString(); ストリングjson4 = StringEscapeUtils.unescapeJava(jsonStr)。 System.out.println( "data.get(0):" + jsonStr)。 System.out.println( "StringEscapeUtils.unescapeJava(jsonStr):" + json4)。 } PERSON2人 = 新しいPERSON2()。 person.setName( "BB" ); person.setAge( "AA" ); 文字列json1 = JSON.toJSON(人).toString(); System.out.println( "人:" + json1)。 } }