我有进行反序列化的通用代码。事实上,内容确实是某些序列化对象的JSON数据,而GSON抛出异常“期望的字符串,但是是BEGIN_OBJECT”
Gson gson = new Gson();
Class<T> type = String.class;
String text= "{\"OrderId\":999,\"OrderDate\":\"Jan 11, 2015 12:00:00 AM\",\"Amount\":111.222,\"Comment\":\"order1\"}";
T next = gson.fromJson( text, type);
在这种情况下,看起来反序列化取决于内容而不是提供给fromJson()方法的类型。即如果text =“foo”,则效果很好但如果text =“{foo}”
则失败问题:如果文本包含JSON数据,如何正确地将文本反序列化为String?
答案 0 :(得分:0)
您正在尝试将对象反序列化为String。您已指定JSON表示String;但是,它表示一个包含4个字段的对象。您应该创建一个表示JSON中数据的对象,例如:
public class OrderData{
public int OrderId;
public String OrderDate;
public float Amount;
public String Comment;
}
然后将type设置为OrderData.class。 GSON将获取JSON对象中的字段并将其值存储到Java对象中。 next
将是OrderData对象。我选择int和float作为最佳猜测,如果你要将它们改为String,GSON会自动处理它。
话虽如此,你应该记住互联网充满解释的两件事:
OrderDate
反序列化为Calendar
对象而不是