快速介绍(可以跳过):嗨,有很多关于这个主题的问题和答案,但是有时候解决方案很简单,你甚至都没想过,因为我已经浪费了很多时间,所以我想发布一个对所有答案的补充。
问题:您有一个JSON REST服务,它处理POST请求以保存JSON对象,但该对象包含Genson未开箱即用解析的Date字段。
Java对象:
public class MyObj {
// The field you want to serialize/deserialize
private Date date;
// Constructor with no arguments needed by Genson
public MyObj() {}
}
球衣的其余服务:
@Path("/api/my-obj")
public class MyObjAPI {
@POST
@Consumes("application/json")
public Response insert(MyObj myObj) {
// do what you want with myObj, it's ready to use with the date
return Response.created('url/to/created/object').build();
}
}
使用jQuery的javascript客户端:
// This is the JSON Object to POST
var myObj = {
date: new Date()
};
$.ajax({
method: 'POST',
url: '/api/my-obj',
data: JSON.stringify(myObj),
dataType: 'json',
processData: false,
contentType: 'application/json'
});
溶液:
Genson提供了一种简单的方法来定义日期的序列化方式,这是一种随处可见的解决方案:
@Provider
public class GensonProvider implements ContextResolver<Genson> {
private final Genson genson = new GensonBuilder()
.useDateAsTimestamp(false)
.useDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"))
.create();
@Override
public Genson getContext(Class<?> type) {
return genson;
}
}
重要事项:
如果上面的解决方案不起作用,请确保Java对象中字段的Date类型是使用以下命令导入的类型:
import java.util.Date;
而不是:
import java.sql.Date;
我自己算出来的,但在StackOverflow上没有找到,这是一个愚蠢的错误,简单到你无法想到(像我一样),我希望它能帮助别人。
类似于Jersey:带有1个元素的Json数组被序列化为object,但在客户端。例如,我收到一个JSON对象,其中一个字段是一个数组,但如果只有一个元素,它就是一个单独的对象。 对 我正在使用 Jersey/Genson 解析/取消编组 JSON。当然,如果JSON与目标类不匹配,我会收到错误(例如) 我已经阅读了很多关于这个错误以及如何在服务器端创建JSON对象时如何避免的信息,但是我没有发现
我试图将一个对象转换为json格式,但它不起作用(我得到一个奇怪的堆栈溢出异常)。它从对象到XML都能完美地工作。我有一个简单的实体类User和另一个具有多个关系的类。 相关类 我将@XmlTransient注释放在我想要忽略的getter上。 下面是我的rest服务中的一个方法,它从用户的昵称返回用户 因此,它使用@products({“application/xml”})而不是@product
在过去的几天里,我一直在努力解决这个问题,我想我尝试了在互联网上找到的每一个例子。我正在尝试登录我的REST,并获取持续通信的授权码。它在使用邮递员时有效 ------取自邮递员生成代码片段---- 它回来了 我的CodenameOne项目中的代码是: 当使用CodenameOne模拟器网络监视器时,会产生以下结果
我有一个嵌套的JSON语句,我需要将其转换为触发数据框。这个JSON语句存在于数据框列中。我一直在尝试使用“from_json”和“get_json_object”解析数据框列中的语句,但无法读取数据。这是我一直试图阅读的源数据的最小片段: 我需要提取嵌套的cript值。我使用下面的代码来清理数据并将其读入数据框 每次运行上述代码时,我都会得到一个空数据框。请帮忙。 尝试了以下内容,但没有成功:P
这是我的用户类,我要在我的数据库中保存符合ISO的日期时间。 这是我的球衣控制器: 我如何使用像泽西岛这样的日期时间格式?是否可以发送一个datatime并自动创建Java8日期时间对象?
问题内容: 我已经在Java中生成了一个包含JSON对象的HTMLPost请求,并希望在PHP中对其进行解析。 并在服务器上 我猜这是因为JSON特殊字符已编码。 json_decode返回空响应 知道为什么吗? 问题答案: 实际上,您不是在发布实体,而是在发布具有单个值对json =(encoded json)的HTTP表单实体()。 代替 尝试