我试图将JSON字符串转换为HashMap。下面是我的一些代码:
public static void createSimpleAppointment(String json){
try
{
Gson gson = new Gson();
HashMap<String,String> data = new HashMap<String,String>();
data = gson.fromJson(json, data.getClass());
在这些行的最后一行(我在其中设置数据)抛出异常。
JSON字符串是
{"body":"body","start Date":"2014-05-30 11:00:00","endDate":"2014-05-30 12:00:00","位置":"位置","主题":"主题!"}
我得到的例外是
html" target="_blank">线程“main”java中出现异常。朗,反思一下。对太阳的攻击。反映NativeMethodAccessorImpl。在sun上调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:57)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。朗,反思一下。方法在org上调用(Method.java:606)。日食jdt。内部的jarinjarloader。装罐机。main(jarsrcloader.java:58)由:com引起。谷歌。格森。JsonSyntaxException:java。lang.IllegalStateException:应为BEGIN_对象,但在com的第1行第3列为字符串。谷歌。格森。格森。com上的fromJson(Gson.java:815)。谷歌。格森。格森。com上的fromJson(Gson.java:768)。谷歌。格森。格森。com上的fromJson(Gson.java:717)。谷歌。格森。格森。ews上的fromJson(Gson.java:689)。日历日历在ews上创建SimplePoint(Calendar.java:70)。主要的网关。主要的main(main.java:34)。。。还有5个原因:java。lang.IllegalStateException:应为BEGIN_对象,但在com的第1行第3列为字符串。谷歌。格森。流动JsonReader。com上的beginObject(JsonReader.java:374)。谷歌。格森。内部的绑定MapTypeAdapterFactory$适配器。在com上阅读(MapTypeAdapterFactory.java:183)。谷歌。格森。内部的绑定MapTypeAdapterFactory$适配器。在com上阅读(MapTypeAdapterFactory.java:145)。谷歌。格森。格森。fromJson(Gson.java:803)。。。还有10个
我在一个将被json加密的类中有一个映射,错误与上面描述的相同:
public class Setting implements Serializable {
private Map<Key, Double> keyToValue = new HashMap<>();
// other fields, setters and getters...
public Map<Key, Double> getKeyToValue() {
return keyToValue;
}
public void setKeyToValue(Map<PlantKey, Double> keyToValue) {
this.keyToValue = keyToValue;
}
}
我不得不使用以下方法来使它工作:
GsonBuilder builder = new GsonBuilder();
builder.enableComplexMapKeySerialization();
builder.create();
资料来源:https://github.com/google/gson/issues/478
我没有看到您在Gson 2.2.4中报告的异常情况,但是您应该开始使用TypeToken
s作为泛型类型。
HashMap<String, String> data = gson.fromJson(json, new TypeToken<HashMap<String, String>>() {}.getType());
您也可以将JSON字符串转换成JavaPOJO类。POJO类中实例成员的名称应该与JSON字符串中定义的完全相同(区分大小写)。
默认情况下,不需要将日期字符串转换为GsonBuilder#setDateFormat()方法处理的日期对象。
示例代码:
class MyJSONObject {
private String body;
private Date startDate;
private Date endDate;
private String location;
private String subject;
// getter & setter
}
// convert json string to MyJSONObject
MyJSONObject data = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss")
.create().fromJson(jsonString, MyJSONObject.class);
// pretty printing of JSON string back from POJO class object
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(data));
输出:
{
"body": "body",
"startDate": "May 30, 2014 11:00:00 AM",
"endDate": "May 30, 2014 12:00:00 PM",
"location": "location",
"subject": "subject!"
}
我试图使用GSON解析一些非常简单的JSON。这是我的代码: 以下是从url返回的JSON: 我得到了一个例外: 有什么想法吗?我是格森的新手。
当我只收到列表中的一个项目时,就会出现这个错误。我在服务器端REST Web服务中使用Jersey,只有当列表返回一个元素时,以及当它有但当它有多个异常时,它工作得非常完美,我就是这样做的: Jersey为什么不发送包含一个项目的列表?是泽西岛的虫子吗?有没有办法让它始终序列化为数组? 这是web服务返回0元素时的JSON数据: 这是web服务返回1个元素时的JSON数据: 当web服务返回超过1
这个错误又回来了! 我是改装的初学者,我看过这篇文章:改装:预期BEGIN_OBJECT但BEGIN_ARRAY 但是即使我试着让它适应我的模型,我仍然不能让它工作。所以我的错误是: 我得到的是: 解析类的属性: IoTGenericDevice子类的属性: 改装电话: 经理:
我的java代码 我的JSON 除id外,所有字段均为字符串 我的错误 18/11/26 18:02:55信息mapreduce。作业:任务Id:尝试_1543189350698_0010_m_000000_0,状态:失败错误:com。谷歌。格森。JsonSyntaxException:java。伊奥。EOFEException:com第1行第3列的输入结束。谷歌。格森。格森。fromJson(G
我知道以前有人问过很多这个问题,但在我的情况下,我找不到解决办法。我请求获得关于POJO(电影)列表的json回复 虽然这是我第一次使用改型,但我在标题中遇到了问题。我正在创建的url是正确的,下面是响应的示例: 这是我的模特 } 我的@GET 我的数据请求类 最后,我想在我的主要活动中做些什么
我对gson反序列化有问题 是我儿子 我的kotlin小工具 还有我的反序列化函数 我有这个错误 我不明白什么是错误的,我真的觉得一切都是正确的,我做了多次不同的测试。 你能帮助我吗。