Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 序列化按属性设置关键帧的对象列表_Java_Json_Serialization_Jackson_Gson - Fatal编程技术网

Java 序列化按属性设置关键帧的对象列表

Java 序列化按属性设置关键帧的对象列表,java,json,serialization,jackson,gson,Java,Json,Serialization,Jackson,Gson,假设我有一门课: public class Person { String name; Int age; } 以及此类对象的列表: List<Person> people = ... 但我希望序列化为单个json对象,其中每个属性都是包含属性的列表,如下所示: "{'name':['John','Sam'],'age':[42,43]}" 任何序列化库都支持这一点吗?我会创建一种“包装器”,它可以容纳任意数量的人员,并以某种方式存储字段,以便以这种方式对其进行序列化

假设我有一门课:

public class Person {
   String name;
   Int age;
}
以及此类对象的列表:

List<Person> people = ...
但我希望序列化为单个json对象,其中每个属性都是包含属性的列表,如下所示:

"{'name':['John','Sam'],'age':[42,43]}"
任何序列化库都支持这一点吗?

我会创建一种“包装器”,它可以容纳任意数量的人员,并以某种方式存储字段,以便以这种方式对其进行序列化。因此,在本例中,您将创建一系列人员,创建一个包含这些人员的包装器,然后将其序列化

public class PersonWrapper {

    private int[] ages;
    private String[] names;

    public PersonWrapper(Person... persons) {
        ages = new int[persons.length];
        names = new String[persons.length];

        for (int i = 0; i < persons.length; i++) {
            ages[i] = persons[i].getAge();
            names[i] = persons[i].getName();
        }
    }
}
公共类PersonWrapper{
私人年龄;
私有字符串[]名称;
公众人物包装(人…人){
年龄=新整数[人长];
名称=新字符串[persons.length];
for(int i=0;i
将您的
列表
转换为新对象

class NewClass {
    List<String> name;
    List<Integer> ages;
}
class新类{
名单名称;
列出年龄;
}
然后通过序列化程序传递此对象以获取:
“{'name':['John','Sam'],'age':[42,43]}”

序列化库通常不是为类似的东西而设计的。 您需要的是JSON树转换,您可以轻松地在Gson和Jackson中实现它

以下是Gson的一个转换示例:

最终类转换{
私有转换(){
}
静态JsonObject transposeShallow(最终Iterable
class NewClass {
    List<String> name;
    List<Integer> ages;
}
[{"name":"John","age":42},{"name":"Sam","age":43}]
{"name":["John","Sam"],"age":[42,43]}