从JSON创建一个对象(GSON:java.lang.IllegalStateException:预期BEGIN_OBJECT但是是STRING)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从JSON创建一个对象(GSON:java.lang.IllegalStateException:预期BEGIN_OBJECT但是是STRING),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2528字,纯文字阅读大概需要4分钟。
内容图文
![从JSON创建一个对象(GSON:java.lang.IllegalStateException:预期BEGIN_OBJECT但是是STRING)](/upload/InfoBanner/zyjiaocheng/770/16578cc4999a4b8898a8967a90cec20a.jpg)
我想使用我使用HttpUrlConnection构建的客户端应用程序来读取REST服务的GET方法的结果.该方法返回有关用户的信息.阅读之后,我想创建一个User类型的对象,并填充该User的所有信息.
我想我必须先把它转换成JSON,对吧?我正在使用GSON.
我有的是:
if(urlConnection.getResponseCode()==200)
{
String response ="";
Scanner inStream = new Scanner(urlConnection.getInputStream());
while(inStream.hasNextLine())
response+=(inStream.nextLine());
System.out.println(response);
//JSON
Gson gson = new Gson();
String json = gson.toJson(response);
System.out.println(json);
// User Object
User object = new User();
object = gson.fromJson(json, User.class);
System.out.println(object);
}
当我第一次打印时,我会收到:
{"userID":"user2","isMale":false,"isObject":false,"telephone":"+911111111","email":"maug@abc.pt","birthdate":"2012-08-01","firstName":"Maria","lastName":"Silva","isocountrycode":"PT"}
当我做第二次印刷时,我收到:
"{\"userID\":\"user2\",\"isMale\":false,\"isObject\":false,\"telephone\":\"+911111111\",\"email\":\"maug@abc.pt\",\"birthdate\":\"2012-08-01\",\"firstName\":\"Maria\",\"lastName\":\"Silva\",\"isocountrycode\":\"PT\"}"
但是当我尝试打印User对象时,我收到此错误:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 226
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176)
at com.google.gson.Gson.fromJson(Gson.java:795)
at com.google.gson.Gson.fromJson(Gson.java:761)
at com.google.gson.Gson.fromJson(Gson.java:710)
at com.google.gson.Gson.fromJson(Gson.java:682)
at httpURLconnection.UserGetUserInfo.main(UserGetUserInfo.java:70)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 226
at com.google.gson.stream.JsonReader.expect(JsonReader.java:339)
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:322)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:165)
... 5 more
你能告诉我我做错了什么吗?
使用该User类填充所有User对象字段.
用户类:
public class User {
String userID = null;
boolean isMale = false;
boolean isObject = false;
String Telephone = null;
String Email = null;
Date Birthdate = null;
String FirstName = null;
String LastName = null;
String ISOcountrycode = null;
(...)
}
解决方法:
在您的USER类中,您必须声明JSONObject包含的所有数据类型,而不是更多而不是更少.
F.e:
class User {
String UserID =“”;
Boolean isMale;}
等等.
否则GSON.toJson();将无法工作并抛出异常.
内容总结
以上是互联网集市为您收集整理的从JSON创建一个对象(GSON:java.lang.IllegalStateException:预期BEGIN_OBJECT但是是STRING)全部内容,希望文章能够帮你解决从JSON创建一个对象(GSON:java.lang.IllegalStateException:预期BEGIN_OBJECT但是是STRING)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。