我真的不知道如何说出这个问题的标题,所以如果有人有更好的标题,请提出建议。我正在尝试编码/解码Sessions
的ArrayList,并且每个会话都有一个Shot
的ArrayList。我遇到的问题是,当我尝试对Sessions列表进行编码时,Gson并没有为每个会话挖掘Shots数组并编码镜头的ArrayList,但只留下一个空数组:
[
{
"ANGLE":71.356865,
"DATE":"2015-11-25-11-02",
"KEY":62,
"SHOTS":[
]
},
{
"ANGLE":75.26292,
"DATE":"2015-11-25-11-02",
"KEY":63,
"SHOTS":[
]
}
]
会话类
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Session {
@SerializedName("SHOTS") @Expose
public ArrayList<Shot> shots;
@SerializedName("SCORE") @Expose
public float averageScore;
@SerializedName("DATE") @Expose
public String date;
@SerializedName("KEY") @Expose
public int pk;
...
}
镜头类
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Shot {
public String identifier;
@SerializedName("SCORE") @Expose
public double score;
@SerializedName("TYPE") @Expose
public int problem;
@SerializedName("PROBLEM_STRING") @Expose
public String problemString;
...
}
构建json字符串:
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
String json = gson.toJson(sessions);
在进一步研究之后,当我重建对象时数据正在丢失,而不是在我对其进行序列化时。这是我用来反序列化它的代码:
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<Session>>(){}.getType();
sessions = gson.fromJson(sessionsString, type);
经过更多的挖掘,我的数据丢失与Gson的编码/分离无关。我想向谷歌道歉,指责他们。我的问题似乎与AsyncTask有关,我已将其重新发布here。
答案 0 :(得分:0)
首先你确定这个名字吗? 其次,我看到的唯一数组是分数
"SCORE":[
]
请重新检查json对象或使用实际数据更新它