Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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字段无序_Json_Spring_Jackson - Fatal编程技术网

JSON字段无序

JSON字段无序,json,spring,jackson,Json,Spring,Jackson,我正在使用SpringMVC编写一些RESTful服务。我正在使用jsckson映射器进行It转换。 除了它生成的json字段完全无序外,所有这些都可以正常工作 例如。 如果我的实体对象如下所示: public class EntityObj { private String x; private String y; private String z; } 如果我现在有一个EntityObjs列表,并从控制器返回该列表,则json的字段顺序混淆,例如: [{y:“ABC”,z

我正在使用SpringMVC编写一些RESTful服务。我正在使用jsckson映射器进行It转换。 除了它生成的json字段完全无序外,所有这些都可以正常工作

例如。 如果我的实体对象如下所示:

public class EntityObj
{
   private String x;
   private String y;
   private String z;
}
如果我现在有一个EntityObjs列表,并从控制器返回该列表,则json的字段顺序混淆,例如: [{y:“ABC”,z:“XYZ”,x:“DEF”},{y:“ABC”,z:“XYZ”,x:“DEF”}]

四处寻找解决方案,但没有找到。还有其他人面临这个问题吗


感谢您的帮助

正如其他人所建议的那样,订购应该无关紧要。尽管如此,如果您喜欢某些排序,请使用如下注释:

@JsonPropertyOrder({ "x", "y", "x" })
public class EntityObj {
}

我意识到这不适用于以大写字母开头的变量名。例如,名为“ID”的变量将不会排序。

如果字母顺序适合您,并且您正在使用Spring Boot,则可以将其添加到
应用程序中。属性

spring.jackson.mapper.sort-properties-alphabetically=true

如果您不想像在接受的答案中那样明确定义字段顺序,您可以简单地使用:

@JsonPropertyOrder(alphabetic=true)

但为什么这是一个问题?每当我使用JSON时,我也注意到了奇怪的顺序,但无论如何,当你以后访问它时,你可能会通过“键”访问它,所以顺序应该不重要。很好的一点是,这不应该是一个问题,但我很好奇你为什么要订购它们。你这样做有特殊的原因吗?好吧,只是为了让它可读。解析它没有问题。我有具有列表属性的对象。比如说一个objectA,里面有一个objectB列表,以及id、name等其他属性。当有人看到来自我API的json响应时,我宁愿让他们看到id、名称以及之后的objectB列表。可能重复的或可以全局定义此
objectMapper.configure(MapperFeature.SORT_PROPERTIES_字母顺序,true)
您可以通过使用@JsonPropertyOrder({“id”,“otherfields”})修复此问题,关键是列出JSON输出中出现的字段。我不能+1这就足够了。Jackson@JsonPropertyOrder要求类中的每个属性都要按驼峰大小写。我还没有在任何地方看到记录。谢谢,我的OCD现在很高兴:-P