我真的不知道如何说出这个问题的标题,所以如果有人有更好的标题,请建议。我正在尝试编码/解码会话
s的ArrayList,并且每个会话都有一个Shot
s的ArrayList。我遇到的问题是,当我尝试对会话列表进行编码时,Gson不会深入研究每个会话的Shot数组并对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的编码/解压缩无关。我想向Google道歉,因为我责怪了他们。我的问题似乎与AsyncTask有关,我已经在这里转发了。
首先,你确定这个名字吗?其次,我看到的唯一数组是分数
"SCORE":[
]
请重新检查json对象或使用实际数据更新它
我想在Java中反序列化包含空值的json字符串。我想将对象反序列化为对象。json字符串类似于: 当我反序列化使用 由于对象中的that,我得到一个空指针异常。我如何指示Gson忽略空值的反序列化?
问题内容: 确定,所以我编辑了问题,因为它不够清楚。 编辑2 :更新了JSON文件。 我在Android应用程序中使用GSON,我需要解析来自服务器的JSON文件,这些文件有点太复杂了。我不想让我的对象结构太沉重,所以我想简化内容: 所以我的对象的结构将不是JSON文件的结构。 例如,如果在JSON中,我有以下内容: 我不想保留我当前的对象结构,即一个对象,其中包含一个和一个“总计”。但是我只想将
主要内容:示例我们将一个Java对象序列化为一个Json文件,然后读取该Json文件以获取对象。 在这个例子中,创建一个类。 然后将对象列化后存储在文件中,该文件将具有对象的json表示形式。 示例 在中创建一个名为的Java类文件,参考以下代码 - 执行上面示例代码,得到以下结果 -
我试图将JSON字符串反序列化为Java对象,但遇到以下异常: JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@306A30C7未能对给定类型类java.util.ArrayList的json对象[“93”]进行反序列化 我的主文件: 应该表示JSON的类是: 我尝试了SO上给出的解决方案,但也有
我的目标是让这个电话“只是工作”。
以下代码导致此异常: 所以问题是:如何在GSON序列化和反序列化的泛型HashMap中获得正确的实例?