2015-06-15 37 views
1

我不太瞭解傑克遜,我只是用它,因爲我需要將數據從Python分享到Java。反正我的代碼非常簡單傑克遜 - 提取數據沒有括號,逗號和=?

ObjectMapper mapper = new ObjectMapper(); 
Map<String,Object> data = mapper.readValue(new File(FileName), Map.class); 
System.out.println(data.get("SomeInput")); 

這就是我得到:

{Y=0.830168776371308, Z=0.16877637130801687, X=0.0010548523206751054} 

我真的只是想能夠使用data檢索某些類型的數據結構保存數據而不打印{}和=等,有沒有一種方法來做到這一點?

我有一組節點,每個標記的一個節點(如ADP)。我希望能夠給ADP節點0.830 ...我可以用字符串來做到這一點,但它會涉及到一些令人煩惱的字符串分裂。我假設必須有一個簡單的方法來做到這一點?

編輯:

在JSON文件中的數據,我是裝看起來像這樣

{ 
    "!": { 
     "X": 1.0 
    }, 
    "$": { 
     "X": 1.0 
    }, 
    "&": { 
     "X": 1.0 
    }, 
    "/m": { 
     "Y": 1.0 
    }, 
..... 
+1

,什麼是問題?沒有問號 – John

+0

您應該研究JSON模型,[這裏](http://www.json.org/)。然後查看「Map」具有哪種類型的值。 –

回答

3
ObjectMapper mapper = new ObjectMapper(); 
Map<String,Object> data = mapper.readValue(new File(FileName), Map.class); 
Map<String, Double> tags = (Map) data.get("SomeInput"); 

double value = 0; 
for (String tag : tags.keySet()) { 
    value = tags.get(tag); //Here I get all the data from the tags inside the input. E.g.: 0.830168776371308 
    System.out.println(value); //It will print ADP, ADV and X values. 
} 
+1

完美,謝謝 – jonbon

1

你已經得到有關如何使用Map一個很好的答案。但爲了完整起見,有,有時甚至工作更好,讀一棵樹另一種可能性:

JsonNode root = mapper.readTree(new File(FileName)); 
JsonNode inputs = root.path("SomeInput"); 
String exclValue = inputs.path("!").asString();