Tag: json

泽西+jackson反序列化失败与日期对象

我正在使用jersey和jackson来开发我的REST API,并且在反序列化日期字符串时遇到问题。 我在泽西岛注册了一个提供者类: @Provider public class MyJsonProvider extends JacksonJsonProvider { public static final String DATE_FORMAT = “yyyy-MM-dd HH:mm:ss”; @Override public void writeTo(Object value, Class type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException { ObjectMapper mapper = locateMapper(type, mediaType); // Enable human readable date format SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); […]

小写枚举Gson

我需要使用Gson输出枚举值,由于客户端限制需要小写。 例如, CLOSE_FILE将是close_file 。 有一个简单的方法吗? 我已经看过制作一个实现JsonSerializer的类,但看起来我必须手动序列化整个类(这是非常复杂的)是这样的吗?

GSON抛出exception解析空Date字段

我正在使用GSON来反序列化一些JSON。 JSON是: { “employee_id”: 297, “surname”: “Maynard”, “givenname”: “Ron”, “lastlogin”: “”, … Employee对象有一个Date字段lastlogin: public class Employee { private Integer employee_id; private String surname; private String givenname; private Date lastlogin; 我遇到的问题是,当未填充lastlogin值时,它是JSON中的空字符串,因此GSON解析器抛出: java.text.ParseException: Unparseable date: “” at java.text.DateFormat.parse(DateFormat.java:337) at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:79) at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:66) 通常的方法是什么?

jacksonJSON – 反编译Commons MultiMap

我想使用JSON序列化和反序列化MultiMap(Apache Commons 4)。 要测试的代码段: MultiMap map = new MultiValueMap(); map.put(“Key 1”, “Val 11”); map.put(“Key 1”, “Val 12”); map.put(“Key 2”, “Val 21”); map.put(“Key 2”, “Val 22”); ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(map); MultiMap deserializedMap = mapper.readValue(jsonString, MultiValueMap.class); 序列化工作正常,并产生我期望的格式: {“Key 1”:[“Val 11″,”Val 12″],”Key 2”:[“Val 21″,”Val 22”]} 不幸的是,反序列化产生的结果不是它看起来的样子:在反序列化之后,Multimap在ArrayList中包含一个用于键值的ArrayList,而不是包含值的键的单个ArrayList。 由于MultiMap实现了Map接口,因此调用多映射的put()方法来添加在json字符串中找到的数组,从而产生了这个结果。 如果将新值放入非现有键,MultiMap实现本身将再次创建一个ArrayList。 有没有办法绕过这个? 感谢您的帮助!

Java,Parse JSON我知道的对象是null

我有一个JSON对象数组。 要解析这些数组并存储简单的数据类型值,我必须对键名进行假设并相应地存储它们。 我也知道有时键的值将为null。 示例{[“promotion”:null]}我将如何解析这个? 如果我尝试访问值为null的键,我会得到一个JSONException。 现在这是有道理的,但即使我这样做if(myJSObject.getString(“promotion”)!=null)然后我检查时仍然会得到JSONexception 我如何在我的代码中对null对象进行条件检查,以便我可以避免JSONexception

如何让Spring缓存存储ResponseBody而不是中间对象

我使用spring cache和this方法,它将查询的值作为JSON返回: @RequestMapping(“/getById”) @ResponseBody @Cacheable public HugeValue getHugeValueFromSlowFoo( @RequestParam(value = “id”, defaultValue = “”) String id ) { return Foo.getById( id ); } 这工作正常,HugeValue对象存储在缓存中(在本例中为Hazelcast)。 我想进一步改进这个,因为从HugeValue创建JSON的时间非常长。 我可以告诉spring cache缓存我对象的JSON-ified版本吗? 我使用Jackson和Spring Boot 1.2以及Spring 4.1

JSR-353如何使用javax.json.JsonObjectBuilder添加空值

由于javax.json文档建议创建JsonObject的方法是使用提供的构建器,如: JsonBuilderFactory factory = Json.createBuilderFactory(config); JsonObject value = factory.createObjectBuilder() .add(“firstName”, “John”) .add(“lastName”, “Smith”) .add(“age”, 25) .add(“address”, factory.createObjectBuilder() .add(“streetAddress”, “21 2nd Street”) .add(“city”, “New York”) .add(“state”, “NY”) .add(“postalCode”, “10021”)) .add(“phoneNumber”, factory.createArrayBuilder() .add(factory.createObjectBuilder() .add(“type”, “home”) .add(“number”, “212 555-1234”)) .add(factory.createObjectBuilder() .add(“type”, “fax”) .add(“number”, “646 555-4567”))) .build(); 此示例添加了给定键的值。 在现实生活中,这些值可能来自某些(pojo)域对象,如: JsonBuilderFactory factory = Json.createBuilderFactory(config); JsonObject value = factory.createObjectBuilder() .add(“firstname”, customer.getFirstame()) […]

如何将列表作为来自jersey2客户端的响应

我试过这个, List list=client.target(url). request(MediaType.APPLICATION_JSON).get(new GenericType<List>(){}); 但我没有得到列表而是我得到空值

自定义Jackson HttpMessageConverter不再适用于Spring 4.2

我正在将一个应用程序从Spring Platform 1.1.3.RELEASE更新到2.0.1.RELEASE,它将Spring Framework版本从4.1.7升级到4.2.4,将Jackson从2.4.6升级到2.6.4。 Spring或Jackson处理自定义HttpMessageConverter实现似乎没有任何重大变化,但我的自定义JSON序列化未能发生,我无法确定原因。 以下在Spring Platform版本中可以正常工作: 模型 @JsonFilter(“fieldFilter”) public class MyModel { /*model fields and methods*/ } 模型包装 public class ResponseEnvelope { private Set fieldSet; private Set exclude; private Object entity; public ResponseEnvelope(Object entity) { this.entity = entity; } public ResponseEnvelope(Object entity, Set fieldSet, Set exclude) { this.fieldSet = fieldSet; this.exclude = exclude; this.entity […]

JSONObject文本必须以“{”错误开头

我有一个来自我们的REST服务的JSON: [ “{\”category_name\”:[\”Industry Components\”],\”categoryId\”:[1]}”, “{\”category_name\”:[\”Business Components\”],\”categoryId\”:[2]}”, “{\”category_name\”:[\”Utilities\”],\”categoryId\”:[3]}”, “{\”category_name\”:[\”Tools\”],\”categoryId\”:[4]} ] 我正在使用java-json.jar来解析这个JSON,这是我试图传递JSON字符串的简单片段: JSONObject jsonObject = new JSONObject(jsonStr); 但我得到以下exception: org.json.JSONException: A JSONObject text must begin with ‘{‘ at 1 [character 2 line 1] 首先我假设它是因为JSON中的[和]字符,我试图替换如下: String replacedStr = jsonStr.replaceAll(“\\[“, “”).replaceAll(“\\]”, “”) 但即便如此,我也得到同样的例外。 谁能指导我知道我做错了什么?