我很难想出一个代表以下JSON的类。“家庭关系”是一组数组。每个数组都有person1和person2标识符,以及person1和person2之间的关系。正如您可能已经猜到的,数组中值的顺序非常重要。例如,如果“12345”和“31142”位置切换,则表示“31142”是“12345”的父项,这是完全错误的。
{
"familyRelationships": [
[
"12345",
"SPOUSE",
"67890",
{
"careTaker": false,
"liveTogether": true
}
],
[
"12345",
"PARENT",
"31142",
{
"careTaker": true,
"liveTogether": true
}
],
[
"67890",
"PARENT",
"31142",
{
"careTaker": true,
"liveTogether": true
}
]
]
}
网上有一些工具可以为您做到这一点
package com.example;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"familyRelationships"
})
public class Example {
@JsonProperty("familyRelationships")
private List<List<String>> familyRelationships = null;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonProperty("familyRelationships")
public List<List<String>> getFamilyRelationships() {
return familyRelationships;
}
@JsonProperty("familyRelationships")
public void setFamilyRelationships(List<List<String>> familyRelationships) {
this.familyRelationships = familyRelationships;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
这是仅有的一种可能性http://www.jsonschema2pojo.org/
JSON不会很好地成为POJO,因为数组中包含的类型不一致:
例如。
[
"12345",
"SPOUSE",
"67890",
{
"careTaker": false,
"liveTogether": true
}
]
是字符串,字符串,字符串,对象
。唯一有效的方法是如果你有一个对象[]
或列表
这应该可以通过使用自定义反序列化程序来实现。
在我看来,一个关系应该被建模为一个带有专有名称的java类。请注意,构造函数将一个JSONNode
作为参数,我已经留下了我们的任何getter和setter:
public class Relationship {
private final String id1;
private final String id2;
private final Relation relation;
private final boolean careTaker;
private final boolean liveTogether;
public Relationship(JsonNode base) {
this.id1 = base.get(0).asText();
this.id2 = base.get(2).asText();
this.relation = Relation.valueOf(base.get(1).asText());
this.careTaker = base.get(3).get("careTaker").asBoolean();
this.liveTogether = base.get(3).get("liveTogether").asBoolean();
}
public enum Relation {
PARENT,
SPOUSE;
}
}
我们还需要一个存储集合的类。这是您将反序列化顶级对象的类(再次忽略getter和setter):
@JsonDeserialize( using = FamillyRelationshipsDeserializer.class )
public class FamillyRelationships {
public List<Relationship> familyRelationships = new ArrayList<>();
}
最后,我们需要实现上述类中引用的实际的JsonDeserializer
。它应该如下所示。我用这个问题作为参考:
class FamillyRelationshipsDeserializer extends JsonDeserializer<FamillyRelationships> {
@Override
public FamillyRelationships deserialize(JsonParser jp, DeserializationContext ctxt) throws
IOException, JsonProcessingException {
FamillyRelationships relationships = new FamillyRelationships();
JsonNode node = jp.readValueAsTree();
JsonNode rels = node.get("familyRelationships");
for (int i = 0; i < rels.size(); i++) {
relationships.familyRelationships.add(new Relationship(rels.get(i));
}
return relationships;
}
}
我希望这能有所帮助,我实际上还没有测试过任何一个,它甚至可能不会编译,但原则应该是正确的。我还假设JSON是您提供的格式。如果这不是保证,那么你需要进行适当的检查并处理任何偏差。
如果您还希望能够序列化所有内容,则需要实现JsonSerializer
查看此问题以了解更多详细信息。
问题内容: 找到字符串的所有排列的一种优雅方法是什么。例如,的排列会是和,但是较长的字符串呢?有任何实现示例吗? 问题答案:
问题内容: java如何生成给定字符串的所有排列? 问题答案:
本文向大家介绍Python生成给定长度的随机字符串,包括了Python生成给定长度的随机字符串的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将看到如何生成具有给定长度的随机字符串。这在创建需要随机性的随机密码或其他程序时很有用。 random.choices 随机模块中的choices函数可以产生字符串,然后可以将其连接以创建给定长度的字符串。 示例 输出结果 运行上面的代码给我们以下结
本文向大家介绍详解java生成json字符串的方法,包括了详解java生成json字符串的方法的使用技巧和注意事项,需要的朋友参考一下 例1:将map对象添加一次元素(包括字符串对、数组),转换成json对象一次。 代码: 运行结果: (需要用到的包可在官网下载:http://www.json.org/java/index.html) 例2:list转换成json的三种参数形式。 运行结果: 例3
本文向大家介绍生成随机字符串,直到使用Python生成给定字符串为止,包括了生成随机字符串,直到使用Python生成给定字符串为止的使用技巧和注意事项,需要的朋友参考一下 给定一个字符串,我们的任务是使用字符,特殊字符,数字等的随机组合生成一些字符串。 示例 算法 范例程式码 输出结果
问题内容: 我想要一个从JSON生成Java源文件的实用程序。例如我们有 我们将此传递给实用程序,并希望它生成如下内容: 编写起来并不难,但是我敢肯定有人已经做到了。 问题答案: 尝试: http://www.jsonschema2pojo.org Orsol,我确定你在这里还没有等待解决方案,但是为了下一个找到此线程的人,我想我会添加一些更多信息。 自从09年12月问这个问题以来发生了两件事: