Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON名称映射到Java类字段/方法(Jackson解析器) 总结_Java_Json_Playframework_Jackson - Fatal编程技术网

将JSON名称映射到Java类字段/方法(Jackson解析器) 总结

将JSON名称映射到Java类字段/方法(Jackson解析器) 总结,java,json,playframework,jackson,Java,Json,Playframework,Jackson,如何将JSON名称映射到使用Jackson解析器时可能(略有)不同的Java类字段名 细节 我有一些传入的JSON文档,我想使用。这在JSON名称与最终Java对象字段名称匹配的情况下非常有效(我在Play框架中这样做) 但是,传入的JSON文档中的一些JSON名称并不适合使用漂亮的Java字段名。更改所有现有的JSON文档以使用适当的Java命名约定目前是不可行的 比如说 { "goodName": "value", "not-so-handy": "value" } 我不能创建一个

如何将JSON名称映射到使用Jackson解析器时可能(略有)不同的Java类字段名

细节 我有一些传入的JSON文档,我想使用。这在JSON名称与最终Java对象字段名称匹配的情况下非常有效(我在Play框架中这样做)

但是,传入的JSON文档中的一些JSON名称并不适合使用漂亮的Java字段名。更改所有现有的JSON文档以使用适当的Java命名约定目前是不可行的

比如说

{
  "goodName": "value",
  "not-so-handy": "value"
}
我不能创建一个字段名为“notsoHandy”的Java类,因为这在Java中不是一个合法的名称


如何使用Jackson解析器将传入的JSON名称转换为指定的Java类字段名?

使用
@JsonProperty

@JsonProperty("goodName")
public String goodName;

@JsonProperty("not-so-handy")
public String notSoHandy;

这将解决问题。

重命名属性的注释-是否有方法以编程方式获取jackson注释定义的映射?(“不太方便”->“不太方便”)。我需要从引用JSON字段名的REST服务中转换一个“sortField”参数。在您列出的示例中,调用方将调用
list?sortField=notSoHandy
,我需要将其转换为Java bean字段名“notSoHandy”。您可以从URL获取字段名,将其放入您选择的bean字段中。我需要映射信息(“notSoHandy”->“notSoHandy”),而不是解析或向bean中注入任何值。我最终阅读了类方法和注释信息,这比我想象的要容易,但如果Jackson公开了它已经知道的映射,那就太好了