序文
JSONは、JavaScriptオブジェクト表記の略語であり、軽量のデータ交換であり、XMLに代わるものであり、XMLよりも小さく、より速く、解析しやすいです。 JSONはオブジェクトを記述するときにJavaScriptの構文を使用するため、言語とプラットフォームに依存しないものであり、多くのJSONパーサーとクラスライブラリが長年にわたって開発されてきました。
JSONには次の形式があります。
オブジェクトは、「 'name/value'ペア」の順序付けられていないコレクションです。オブジェクトは「{」(開くブラケット)で始まり、「}」(閉じます)で終わります。それぞれの「名前」の後に「:」(コロン); 「 'name/value'ペア」は「(コンマ)」によって分離されています。
順序付けられた値のリスト。ほとんどの言語では、配列、ベクトル、リスト、シーケンスとして実装されています。
これらは一般的なデータ構造です。現在、ほとんどのプログラミング言語は何らかの形でそれらをサポートしています。これにより、さまざまなプログラミング言語間で同じ形式でデータを交換できます。
他のサーバーのURLからデータを取得するために、通常、JSONデータを送信します。たとえば、サーバーBは、サーバーAのURLからページング情報を取得する必要があります。JSON文字を取得した後、便利で操作が迅速である場合は、独自のJavaオブジェクトに変換する必要があります。
ここで、私は3人のサードパーティのJSONを試して、Google GSONを変換しました。これは正常に変換できないようです。 JSON形式のエラーを報告し続けますが、検証は正しく、試みは失敗しました。 2番目のタイプはnet.sf.jsonです。これは、エラーが報告されないことを意味しますが、オブジェクトの値は常に空です。 JSON-Simpleのみがオブジェクトを正常に変換できます
解析JSON
まず、JSONが標準のJSON形式であるかどうかを確認するためにJSONを解析する必要があります。インターネット上の多くのオンライン形式でJSONを表示できます。一般的に、JSONをオブジェクトとして解析するときの薬ではなく、スープを交換します。
最初:JSON構造を知る必要があります。ここでは、サーバーAを起動し、そのURLからJSONデータの文字列を取得します。
コピーJSONデータをフォーマットツールに投げると、構造がはっきりとわかります。
{"eventlist":[{"id":1030、 "eventid": "150877911818499700"、 "createtime":1508779115000、 "endtime":1508865480000、 "eventcontent": "" 123 "、" openid " }、{"id":1029、 "eventid": "1508382907251660498"、 "createtime":1508382906000、 "endtime":1508383020000、 "eventcontent": "ahhhhh"、 " }、{"id":1028、 "eventid": "1508308708414580378"、 "createtime":1508308721000、 "endtime":1508309040000、 "eventcontent": "30"、 "openid": "id":1027、 "eventid": "1508308463330664814"、 "createtime":150830308480000、 "endtime":1508308560000、 "eventcontent": "28"、 "openid": "o4ewz06xhw6mc2gmzmzmzmzvdetx1 zk 1026、 "eventid": "1508308463017144213"、 "createtime":1508308479000、 "endtime":1508308560000、 "eventcontent": "27"、 "openid": "o4ewz06xzhw6mc2gmzmyvdetx1zk" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 15 "5"、 "ishaspage": "1"}2番目:構造に基づいて対応するエンティティクラスを作成します
com.yhn.consumer.entity.eventをインポート;インポートlombok.data; Import org.json.simple.jsonobject; Import java.io.serializable; Import Java.util.list;プライベート文字列ページ。プライベート文字列サイズ。プライベートストリングishaspage; public eventvo(jsonobject object){// constructorメソッドは、object eventlist =(list <event>)object.get( "eventlist");に値を割り当てます。 page =(string)object.get( "page"); size =(string)object.get( "size"); iShaspage =(string)object.get( "ishaspage"); }}埋め込まれた構造であるため、以下はprivate List<Event> eventListのイベントクラスです。
Lombok.data; Import org.hibernate.annotations.dynamicupdate; import javax.persistence.entity; import javax.persistence.generatedValue; import javax.persistence.id; import java.io.serializable; Impont java.util.util.util.til.date@entitiat@dikative@dikative serializable {//これは、eventvo @id @generatedValueプライベート整数IDのリストのイベントです。 //並べ替え関数private string eventid; //イベントIDプライベートデートCreateTime; //作成時間プライベートデートの終了時間。 //プライベート文字列eventContentを更新します。 //イベントコンテンツプライベート文字列OpenIDを思い出させます。 //ユーザーID}テストクラス
次に、構造も書かれています。サーバーBにユニットテストを作成して、値を正常に割り当てることができるかどうかを確認します。
@test public void clientDemo()スロー例外{stringbuilder json = new StringBuilder(); url urlobject = new url( "http://127.0.0.0.1/meetingsign/test/server?openid=o4ewz06xzhw6mc2gmzmyvdetx1zk&page=2&size=5"); // url httpurlconnection uc =(httpurlconnection)urlobject .openconnection();を指定します。 //接続bufferedReader in = new BufferedReader(new inputStreamReader(uc.getInputStream()、 "utf-8"));文字列inputline = null; while((inputline = in.readline())!= null){json.append(inputline); // json} in.close(); uc.disconnect(); System.out.println(json); //あなたがそれを取得するかどうかを確認します。 // BOMヘッダーファイルが含まれている可能性があるため、可能なUTF-8などを削除します。 string result = formattring(json.tostring()); jsonparser parser = new JSonParser(); org.json.simple.jsonobject data = new org.json.simple.jsonobject(); data =(org.json.simple.jsonobject)parser.parse(result); eventVo eventVo = new EventVo(data); //値をlog.info( "eventvo = {}"、eventvo)に渡す; }/***爆弾ヘッダーを削除*/public static string formattring(string s){if(s!= null){s = s.replaceall( "/ufeff"、 ""); } return s; }テスト結果
オブジェクトに値が割り当てられています
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。