android-无法反序列化对象-预期为BEGIN_OBJECT,但在第1行第1列处为STRING
作者:互联网
首先让我说,我在发布之前已经搜索过,只是找不到答案.
我在反序列化JSON时遇到麻烦.这是有效的JSON(已在http://jsonlint.com/中选中)
它是使用servicestack json序列化程序生成的.
我越来越
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1
这是服务器发送的我的JSON:
{
"artistName": "",
"pathInfo": "C:\\Users\\Unknown\\Desktop\\Audio Sketches\\Chill.mp3",
"indexPos": 0,
"messageType": "song"
}
接收方式:
{"artistName":"","pathInfo":"C:\\Users\\Unknown\\Desktop\\Audio Sketches\\Chill.mp3","indexPos":0,"messageType":"song"}
这是持有它的对象:
public class Song {
private String artistName;
private String albumName;
private String titleName;
private String pathInfo;
private String indexPos;
private String messageType;
public Song() {
}
解决方法:
好的,我最终自己找到了答案,但是感谢所有的支持和帮助.
这是接收JSON对象并使用GSON初始化反序列化的代码.
Map messageObjMap = new Gson().fromJson(message, Map.class);
String type = messageObjMap.get("messageType").toString();
switch (type) {
case "song":
try {
Gson gson = new GsonBuilder().create();
Song song = gson.fromJson(message, Song.class);
...
...
} ...
...
}
假设“消息”是整个JSON.相反,它只是从JSON解析的唯一密钥,这就是为什么反序列化不起作用的原因.希望能对某人有所帮助
标签:json-deserialization,gson,android 来源: https://codeday.me/bug/20191121/2053120.html