杰克逊 - 提取不带括号、逗号和 = 的数据



我对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
    }, 
 .....
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.
}

你已经得到了如何使用Map的好答案。但为了完整起见,还有另一种可能性有时效果更好,读作一棵树:

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

最新更新