我有一个JSON日期,我正在尝试反序列化:
{
"created_at":"2015-05-26 10:14:32"
}
但是,该空间似乎导致GSON出现问题,并引发以下错误:
通用域名格式。谷歌。格森。JsonSyntaxException:com.google.格森。流动MalformedJsonException:第1行第160列的未终止对象路径$。已在创建\u
通用域名格式。谷歌。格森。JsonSyntaxException:2015-05-26
原因:java。文本ParseException:不可解析日期:“2015-05-26”(偏移量10)
以下是我的GSON配置:
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd HH:mm:ss")
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getDeclaringClass().equals(RealmObject.class);
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
})
.create();
我的型号:
public class MyModel extends ReamlObject {
@SerializedName("created_at")
private Date createdAt = new Date(System.currentTimeMillis());
}
终于
gson.fromJson(json, MyModel.class);
有没有人有任何解决方案可以在规定的日期内留出空间?我尝试了一个自定义日期反序列化器,但也没有任何区别。
尝试使用此格式。用“T”替换空格。
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create();
从这里开始:malformedjsonexception我相信您的JSON中有一个错误的“空格”,GSON认为该空格无效:
当对象结尾后有非空白的额外字符时,GSON会抛出该错误,并且它定义的空白非常狭窄(就像JSON规范所做的那样)-仅\t、\n、\r,并且空格计为空白。请特别注意,尾随的NUL(\0)字符不算作空白,这将导致此错误。
此外,从Gson用户指南中,我们阅读了:
... 处理库类(DateTime等)时通常会出现这种情况。Gson允许您注册自己的自定义序列化程序和反序列化程序。这是通过定义两部分来实现的:。。。
意思是你必须这样做
它可能是您的文本输入,
检查此单元测试是否正常工作:
public class ParesDateTest{
@Test
public void test(){
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd HH:mm:ss")
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return false;
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
})
.create();
MyModel o = gson.fromJson("{\n" +
" \"created_at\":\"2015-03-26 10:14:32\"\n" +
"}",MyModel.class);
Assert.assertNotNull(o);
}
public class MyModel {
@SerializedName("created_at")
private Date createdAt = new Date(System.currentTimeMillis());
}
}
问题内容: 我使用了很多不可变的集合,并且很好奇如何使用Gson反序列化它们。由于没有人回答,而且我自己找到了解决方案,因此我正在简化问题并提出自己的答案。 我有两个问题: 如何为所有人编写一个作品? 如何全部注册? 问题答案: 更新:有https://github.com/acebaggins/gson- serializers ,其中涵盖了许多番石榴集合: 如何编写适用于所有Immutable
我需要序列化/反序列化特定枚举: 我有个例外: 我如何通过GSON序列化/反序列化它?
奇怪的是下面的测试用例会失败。有人知道为什么吗?
当JSON字符串{“a”:1}被反序列化时,数字100应该添加到值1中。在jsonb中,这是通过setter方法实现的,但Gson忽略了setter方法。如何让Gson使用setter方法?或者,如果这不可能,2022年,Gson中的setter推荐的替代方案是什么?
我试图反序列化这个json对象数组: 我的java类看起来像这样: 问题在于json的tags属性,它可以是空字符串或数组。现在gson给了我一个错误: 我应该如何反序列化这个json? 我对这个json没有任何控制,它来自第三方api。
课程对象不包装在标记中 某些属性是属性 我需要如何注释我的对象以使FasterXML反序列化这个XML?