2017-09-22 36 views
-1

陣列我有如下JSON文件:訪問使用簡單的JSON解析器的java

{ 
    "KerParameters": [ 
     { 
     "cut": false, 
     "velocity": 0, 
     "sigma": 150, 
     "Tau": 250, 
     "deltaT": 30, 
     "deltaX": 100, 
     "minValue": 0.000001 
     }, 
     { 
     "cut": false, 
     "velocity": 0, 
     "sigma": 150, 
     "Tau": 250, 
     "deltaX": 100, 
     "minValue": 0.000001 
     }  
    ], 
    "time": false, 
    "lower": 1E-14, 
    "qualit": 1.0, 
    "vfth": 55.0, 
    "vjt": 30.0, 
    "lambf": 0.1, 
    "lambs": 0.6, 
    "lambdaj": 0.5, 
    "qRpic": 0.5, 
    "minV": 3.0, 
    "minKernelSizeT": 0 
} 

可能有人請讓我知道如何得到KerParameters的陣列?然後使用簡單的JSON解析器創建其子參數(lambe,lambs等)?我已經可以訪問其他簡單的參數,比如time,lower和all。

嗯,我想它就像這裏的解決方案 How do I make a JSON object with multiple arrays?

JSONParser parser = new JSONParser(); 
     JSONObject data = (JSONObject) parser.parse(
       new FileReader("src/test/resources/testcase4/KernelParameters.json")); 
data.KerParameters['K1'].cut // This dos not work as it does not identify KerParameters 
+0

你不是新來的,所以我有點驚訝,你問這個,而沒有更多地展示你自己曾經嘗試過的解決方案。你自己的代碼嘗試在哪裏?它怎麼不起作用?如果你沒有,那麼這個問題太廣泛了。 –

回答

1

好了,所以最後我做到了這樣。以防萬一它可以幫助別人:

JSONParser parser = new JSONParser(); 
     FileReader fr = new FileReader("path to json file"); 
     JSONObject data = (JSONObject) parser.parse(fr); 
     JSONArray kernelParams = (JSONArray) data.get("KernelParameters"); 
for(int i=0; i<kernelParams.size();i++) { 
      JSONObject jsonObject = (JSONObject) kernelParams.get(i); 
      kparams.add(jsonObject); 
     } 
JSONObject jo = (JSONObject) kparams.get(0); 
     System.out.println("to get Sigma for e.g.: " + jo.get("sigma"));