2016-04-16 19 views
0

サーブレットからインデックスページに送信される以下の文字列データがあります。キーから値を抽出する方法:

{ "hits" : {"hits" : [ { "_source":{"ID":"123","Status":"false","Name":"ABC_123","Date":"2010-08-16T11:07:48"} }, {  "_source":{"ID":"124","Status":"false","Name":"ABC_678","Date":"2010-08-16T12:00:12"} }, {  "_source":{"ID":"125","Status":"true","Name":"FGH_122","Date":"2010-08-16T12:01:48"} }, {  "_source":{"ID":"126","Status":"false","Name":"TYT_333","Date":"2010-08-16T12:06:48"} }, {  "_source":{"ID":"127","Status":"false","Name":"CVF_230","Date":"2010-08-16T12:07:18"} }, {  "_source":{"ID":"128","Status":"true","Name":"AWE_101","Date":"2010-08-16T12:03:48"} }, {  "_source":{"ID":"129","Status":"true","Name":"WEC_299","Date":"2010-08-16T12:07:29"} } ] }} 

は、私がデータを解析などArrayListのフォーマットでデータを見たい:など

{ID:"123", "Name":"ABC_123"} 
{ID:"124", "Name":"ABC_678"} 

...

私はどちらかのクライアント側からこれを実現することができる方法上の任意のアイデアまたはサーバーから?アドバイスをお願いします。ありがとう

+0

クライアントサイドJSでjson objにアクセスするともっと簡単になると思います。 http://stackoverflow.com/questions/35629621/calling-java-method-from-html-without-using-a-servlet/35632063#35632063.inあなたのコードスニペット私はあなたが 'Iterator'を見逃していると思うこのサンプルを試してみてください.http://stackoverflow.com/questions/5338943/read-json-string-in-servlet – gihan

答えて

1

新しい配列を作成し、オブジェクトをJSPに戻す前に追加します。

JSONArray arr = new JSONArray(); 
for (int i = 0 ; i < hitsArray.length(); i++) { 
    JSONObject jObject = hitsArray.getJSONObject(i); 
    arr.put(jObject.get("_source"));   
}  

request.setAttribute("jsonObject", arr); 
RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); 
dispatcher.forward(request, response); 
+0

ありがとうございます。これはうまくいった。 – Sweet

0

ループの前にArrayListHashMapを作成してそこにデータを追加する必要があります。投棄のためのコードを更新しました。この

...rest of your code... 
List<Map<String, String>> list = new ArrayList<Map<String, String>>();    
for (int i = 0 ; i < hitsArray.length(); i++) { 
    JSONObject jObject = hitsArray.getJSONObject(i); 
    Map<String, String> data = new HashMap<String, String>(); 
    JSONObject source = jObject.get("_source"); 
    Iterator<String> it = source.keys(); 
    while (it.hasNext()) { 
     String key = it.next(); 
     data.put(key, source.getString(key)); 
    } 
    list.add(data); 
} 
request.setAttribute("jsonObject", list); 
... rest of your code... 

同様 が、私はjavax.jsonに切り替えることをお勧めします。

+0

あなたは "私はデータソースからデータマップにデータをコピーしていますか?ありがとう。 – Sweet

+0

"コンストラクタHashMap (オブジェクト)が未定義です" – Sweet

+0

何が 'JSONObject'ですか?どのライブラリを使用していますか? JEEから 'JsonObject'を使用するなら、それはうまくいくでしょう。 –