gpt4 book ai didi

android - 反序列化Gson中的有序列表

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:24 38 4
gpt4 key购买 nike

我在 Android 中使用 Gson 库。我以 json 格式从 Web 服务检索一些数据。

所以我得到了我执行以下操作的数据:

Gson gson = new GsonBuilder().create();
ClassA obj = gson.fromJson(returnFromServer.toString(), ClassA.class);

ClassA 所在的位置:

public class ClassA{
private String id;
private List<ClassB> myList;
}

所以我在 obj 中有一个自定义对象列表。

问题是:我可以确定列表的顺序与 json 文件中元素的顺序相同吗?如果不是,Gson 内部是否有任何机制允许保持 json 文件的相同顺序?

注意:之前的所有尝试都会生成一个按照 json 文件相同顺序排序的列表。

最佳答案

您可以使用 LinkedList 实现来维护排序顺序,但是我创建了一个简单的程序,即使在 ArrayList 中也可以维护顺序。您可以检查下面的代码,

我创建了 ClassB.java

package com.zack.demo;

public class ClassB {

private String name;

private int age;

private String gender;


public ClassB(String name, int age, String gender)
{
this.name = name;
this.age = age;
this.gender = gender;

}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}

}

A类.java

package com.zack.demo;

import java.util.List;

public class ClassA {

private String id;
private List<ClassB> myList;

public ClassA(String id, List<ClassB> myList)
{
this.id = id;
this.myList = myList;
}

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<ClassB> getMyList() {
return myList;
}
public void setMyList(List<ClassB> myList) {
this.myList = myList;
}



}

列表顺序的示例测试程序

package com.zack.demo;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import com.google.gson.Gson;

public class GsonTest {

public static void main(String[] args) {

Gson gson = new Gson();


ClassB o2 = new ClassB("Test2", 20, "Male");
ClassB o1 = new ClassB("Test1", 10, "Male");


List<ClassB> ls = new LinkedList<ClassB>();

ls.add(o2);
ls.add(o1);

ClassA a1 = new ClassA("T1", ls);

String result = gson.toJson(a1, a1.getClass());

System.out.println(result);

ClassA obj = gson.fromJson(result.toString(), ClassA.class);

System.out.println(gson.toJson(obj, obj.getClass()));




}

}

结果

{"id":"T1","myList":[{"name":"Test2","age":20,"gender":"Male"},{"name":"Test1","age":10,"gender":"Male"}]}
{"id":"T1","myList":[{"name":"Test2","age":20,"gender":"Male"},{"name":"Test1","age":10,"gender":"Male"}]}

关于android - 反序列化Gson中的有序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22809721/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com