2017-03-02 4 views
-3

Data.json:JSONファイルから詳細情報を取得、ユーザーの入力を取り、Javaでそれを印刷

{"UniversalWord": {"UniversalWord": [ 
    { 
     "uw_id": 1, 
     "HeadWord": {"word": "aare"}, 
     "Restriction": {"SemanticRelations": {"feat": [ 
     { 
      "att": "restriction_type", 
      "value": "iof" 
     }, 
     { 
      "att": "target", 
      "val": " " 
     } 
     ]}}, 
     "NLDescription": { 
     "Gloss": {"feat": { 
      "att": "Description", 
      "val": "\"A RIVER IN NORTH CENTRAL SWITZERLAND THAT RUNS NORTHEAST INTO THE RHINE\"" 
     }}, 
     "Lemma": {"feat": { 
      "att": "word", 
      "val": "aare" 
     }}, 
     "Example": {"feat": { 
      "att": "description", 
      "val": "\"\"" 
     }} 
     }, 
     "MetaInfo": { 
     "Frequency": {"freq": ""}, 
     "UWSource": {"Source_id": "WORDNET"} 
     } 
    }, 
    { 
     "uw_id": 2, 
     "HeadWord": {"word": "aarhus"}, 
     "Restriction": {"SemanticRelations": {"feat": [ 
     { 
      "att": "restriction_type", 
      "value": "iof" 
     }, 
     { 
      "att": "target", 
      "val": " " 
     }, 
     { 
      "att": "restriction_type", 
      "value": "equ" 
     }, 
     { 
      "att": "target", 
      "val": " " 
     } 
     ]}}, 
     "NLDescription": { 
     "Gloss": {"feat": { 
      "att": "Description", 
      "val": "\"PORT CITY OF DENMARK IN EASTERN JUTLAND\"" 
     }}, 
     "Lemma": {"feat": { 
      "att": "word", 
      "val": "aarhus" 
     }}, 
     "Example": {"feat": { 
      "att": "description", 
      "val": "\"\"" 
     }} 
     }, 
     "MetaInfo": { 
     "Frequency": {"freq": ""}, 
     "UWSource": {"Source_id": "WORDNET"} 
     } 
    } 
]}} 

必要な出力:

Word Searched: aare 
uwid = 1 
headword = aare 
semantic relation value = iof 
target = "" 
gloss = A RIVER IN NORTH CENTRAL SWITZERLAND THAT RUNS NORTHEAST INTO THE RHINE 
lemma = aare 
example = "" 
frequency = "" 
Source_ID = wordnet 

code.java

public class SearchJson 
{ 
    public void SearchValueInJson(StringBuilder sb) 
    { 
     try 
     { 
      String jsonData = sb.toString(); 
      JSONObject jobj = new JSONObject(jsonData); 
      Map<String,String> map = new HashMap<String,String>(); 
      iterateJson(jobj,map); 
      System.out.println(map.toString()); 


     } 
     catch(Exception e) 
     { 
      System.out.println(e); 
     } 

    } 
    public void iterateJson(JSONObject jobj,Map map) 
     { 
      for(Object o : jobj.keySet()) 
      { 
       if(jobj.get(o.toString())instanceof JSONObject) 
        iterateJson(jobj.getJSONObject(o.toString()),map); 
       else 
        map.put(o.toString(), jobj.get(o.toString())); 
      } 
     } 
} 

このコードI試してみましたが、期待通りの結果を得られていません。

jsonファイルからこの情報を取得するにはどうすればよいですか?私はそれのための適切な解決策を得ていない。これをコードしてください。そして、あなたがその基礎のデータのキー値を取得しなければならないことを知らないと仮定します。

+2

何か試しましたか?はいの場合は、コードを表示してください。最初に何かを試してみないと。 – Smit

+0

利用可能な多くのjsonパースの1つを使用してください – MadProgrammer

+0

@MadProgrammer OPが単純にファイルを印刷したい場合、JSONの解析は少し残酷に思えます。 – shmosel

答えて

0

次のコードスニペットを確認してください。これにより問題が解決する場合があります。

JSONObject jobj =新しいJSONObject(jsonData);

 JSONArray arr = jobj.getJSONObject("UniversalWord").getJSONArray("UniversalWord"); 

     for (int i = 0; i < arr.length(); i++) 
     { 
      String uw_id = arr.getJSONObject(i).getString("uw_id"); 
      System.out.println(uw_id); 
      String headWord = arr.getJSONObject(i).getJSONObject("HeadWord").getString("word"); 
      System.out.println(headWord); 
      String nLDescription = arr.getJSONObject(i).getJSONObject("NLDescription").getJSONObject("Gloss").getJSONObject("feat").getString("val"); 
      System.out.println(nLDescription); 
     } 
+0

それは働いてくれてありがとう! :) – Nishita

+0

それは素晴らしいです。答えをアップしてください – vighneshwar

関連する問題