将 JSON 属性解析为字符串列表 属性
Parsing JSON properties into list of strings property
我在我的项目中使用 Java Spring。
我需要将 JSON 解析为 java class。
JSON示例:
[
{
"Id":"aaa1"
"Data1":"test11"
"Data2":"test12"
"url1": "https://...someimg11.png",
"url2": "https://...someimg12.png",
},
{
"Id":"aaa2"
"Data1":"test21"
"Data2":"test22"
"url1": "https://...someimg21.png",
"url2": "https://...someimg22.png",
},
{
"Id":"aaa3"
"data1":"test31"
"data2":"test32"
"url1": "https://...someimg31.png",
"url2": "https://...someimg32.png",
}
]
这里 Java class 上面 json 应该被解析为:
class Info{
@JsonProperty("Id")
public String id;
@JsonProperty("Data1")
public String data1;
@JsonProperty("Data2")
public String data2;
//parse to here url1 and url2 properties from json doc
public List<String> urls;
}
如您所见,除了 JSON url1 和 url2 中的最后一个属性,我没有解析属性的问题,
JSON 文件 url1 和 url2 的属性应解析为 List 类型的 URL 属性。
我的问题是,如何解析 class 类型字符串列表中单个 属性 中 JSON 的两个属性?
更新
我可以按照其中一个答案的建议使用 @JsonAnySetter 注释,但在这种情况下,我需要初始化 url 属性,否则,我在解析时会遇到此错误:
Cannot invoke "java.util.List.add(Object)" because "this.urls" is null
如果我使用@JsonAnySetter 注释,我该如何初始化 urls 属性?
您可以使用 @JsonAnySetter 注释来完成,如果有更简单的使用模式或通配符的方法,我不会这样做
class Info{
@JsonProperty("Id")
public String id;
@JsonProperty("Data1")
public String data1;
@JsonProperty("Data2")
public String data2;
//parse to here url1 and url2 properties from json doc
public List<String> urls = new ArrayList<>();
@JsonAnySetter
public void add(String key, String value) {
if(key.equals("url1") || key.equals("url2")) {
urls.add(value);
}
}
}
我在我的项目中使用 Java Spring。
我需要将 JSON 解析为 java class。
JSON示例:
[
{
"Id":"aaa1"
"Data1":"test11"
"Data2":"test12"
"url1": "https://...someimg11.png",
"url2": "https://...someimg12.png",
},
{
"Id":"aaa2"
"Data1":"test21"
"Data2":"test22"
"url1": "https://...someimg21.png",
"url2": "https://...someimg22.png",
},
{
"Id":"aaa3"
"data1":"test31"
"data2":"test32"
"url1": "https://...someimg31.png",
"url2": "https://...someimg32.png",
}
]
这里 Java class 上面 json 应该被解析为:
class Info{
@JsonProperty("Id")
public String id;
@JsonProperty("Data1")
public String data1;
@JsonProperty("Data2")
public String data2;
//parse to here url1 and url2 properties from json doc
public List<String> urls;
}
如您所见,除了 JSON url1 和 url2 中的最后一个属性,我没有解析属性的问题, JSON 文件 url1 和 url2 的属性应解析为 List 类型的 URL 属性。
我的问题是,如何解析 class 类型字符串列表中单个 属性 中 JSON 的两个属性?
更新 我可以按照其中一个答案的建议使用 @JsonAnySetter 注释,但在这种情况下,我需要初始化 url 属性,否则,我在解析时会遇到此错误:
Cannot invoke "java.util.List.add(Object)" because "this.urls" is null
如果我使用@JsonAnySetter 注释,我该如何初始化 urls 属性?
您可以使用 @JsonAnySetter 注释来完成,如果有更简单的使用模式或通配符的方法,我不会这样做
class Info{
@JsonProperty("Id")
public String id;
@JsonProperty("Data1")
public String data1;
@JsonProperty("Data2")
public String data2;
//parse to here url1 and url2 properties from json doc
public List<String> urls = new ArrayList<>();
@JsonAnySetter
public void add(String key, String value) {
if(key.equals("url1") || key.equals("url2")) {
urls.add(value);
}
}
}