Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Java 如何访问JsonPropertyOrder_Java_Json_Jackson - Fatal编程技术网

Java 如何访问JsonPropertyOrder

Java 如何访问JsonPropertyOrder,java,json,jackson,Java,Json,Jackson,我有一个定义了JsonPropertyOrder的POJO,在另一个类中,我需要为该POJO检索该顺序,我如何才能做到这一点 示例POJO: @JsonPropertyOrder({"field1", "field2", "field3"}) public class ReportRow extends Row { private String field1; private String field2; private String field3; } 我可以试试这样的方法吗:R

我有一个定义了
JsonPropertyOrder
的POJO,在另一个类中,我需要为该POJO检索该顺序,我如何才能做到这一点

示例POJO:

@JsonPropertyOrder({"field1", "field2", "field3"})
public class ReportRow extends Row {
  private String field1;
  private String field2;
  private String field3;
}

我可以试试这样的方法吗:
ReportRow.getJsonPropertyOrder()

如果正确,可以获取类的注释信息,然后访问它的属性:

JsonPropertyOrder jpo = ReportRow.class.getAnnotation(JsonPropertyOrder.class);
String[] propertyOrder = jpo.value();

在这种情况下,您可以在Jackson源代码中找到taget属性。

您走对了方向,可以获取类的注释信息,然后访问其属性:

JsonPropertyOrder jpo = ReportRow.class.getAnnotation(JsonPropertyOrder.class);
String[] propertyOrder = jpo.value();

在这种情况下,您可以在Jackson源代码中找到taget属性。

添加到提供的答案中,您可以通过Jackson获得注释:

    ObjectMapper mapper = new ObjectMapper();
    JavaType type = mapper.getTypeFactory().constructType(ReportRow.class);
    BeanDescription desc = mapper.getSerializationConfig().introspect(type);
    JsonPropertyOrder jpo = desc.getClassAnnotations().get(JsonPropertyOrder.class);

除了提供的答案之外,您还可以通过Jackson访问注释:

    ObjectMapper mapper = new ObjectMapper();
    JavaType type = mapper.getTypeFactory().constructType(ReportRow.class);
    BeanDescription desc = mapper.getSerializationConfig().introspect(type);
    JsonPropertyOrder jpo = desc.getClassAnnotations().get(JsonPropertyOrder.class);

通过杰克逊?所以这个我们不需要使用反射包?没错。没有思考。尽管如Jackson在问题中所建议的那样,如果确实存在
getJsonPropertyOrder()
,那就好了?所以这个我们不需要使用反射包?没错。没有思考。尽管如问题中所建议的那样,如果确实存在
getJsonPropertyOrder()
,那就太好了