首先让我说,我在发布之前已经搜索过,只是找不到答案.
我在反序列化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解析的唯一密钥,这就是为什么反序列化不起作用的原因.希望能对某人有所帮助
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。