私はObjectMapperを使用してjava-jsonマッピングを行っています。ジャクソンのObjectMapperを使用したJSONオブジェクトの順序
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
ow.writeValue(new File(fileName +".json"), jsonObj);
これは私のJavaクラスです:
public class Relation {
private String id;
private String source;
private String target;
private String label;
private List<RelAttribute> attributes;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public void setAttributes(List<RelAttribute> attributes) {
this.attributes = attributes;
}
public List<RelAttribute> getAttributes() {
return attributes;
}
}
これは私が得るものです:
{
"id" : "-75da69d3-79c8-4000-a3d8-b10350a57a7e",
"attributes" : [ {
"attrName" : "ID",
"attrValue" : ""
}, {
"attrName" : "Description",
"attrValue" : "Primary Actor"
}, {
"attrName" : "Status",
"attrValue" : ""
} ],
"label" : "new Label",
"target" : "-46b238ac-b8b3-4230-b32c-be9707f8b691",
"source" : "-daa34638-061a-45e0-9f2e-35afd6c271e0"
}
だから私の質問は、今私は、このJSON出力を得ることができますどのように、次のとおりです。
を{
"id" : "-75da69d3-79c8-4000-a3d8-b10350a57a7e",
"label" : "new Label",
"target" : "-46b238ac-b8b3-4230-b32c-be9707f8b691",
"source" : "-daa34638-061a-45e0-9f2e-35afd6c271e0",
"attributes" : [ {
"attrName" : "ID",
"attrValue" : ""
}, {
"attrName" : "Description",
"attrValue" : "Primary Actor"
}, {
"attrName" : "Status",
"attrValue" : ""
} ]
}
私のJava宣言と同じ順序で欲しいです。それを指定する方法はありますか?おそらくアノテーションやそのようなものがあるでしょうか?
コード/デザインの匂いに重大な意味を持つプロパティの順序。 JSONを消費しているものであれば、その注文に気を付けるべきではありません(リストにはい、プロパティーはありません)。 – ach
私は読みやすさのためにそれを必要としています:-) – justSaid
@achそれはちょうど真実ではありません。順序付けられたマップは非常に一般的で、非常に有用なデータ型です。欲望の秩序は全くのにおいではありません。 – goat