1

我对 Jackson 了解不多,我只是在使用它,因为我需要将数据从 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
    }, 
 .....
4

2 回答 2

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.
}
于 2015-06-15T15:03:58.843 回答
1

您已经对如何使用Map. 但为了完整起见,还有另一种有时效果更好的可能性,就像一棵树一样阅读:

JsonNode root = mapper.readTree(new File(FileName));
JsonNode inputs = root.path("SomeInput");
String exclValue = inputs.path("!").asString();
于 2015-06-16T18:27:12.677 回答