2015-06-15 42 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();