Tag: json

gson无法使用GsonBuilder.setDateFormat进行解析(“yyyy-MM-dd’T’HH:mm:ss.SSSZ”)

我从服务器获取此字符串: [ { “title”:”spoil the ones u love today”, “startDateTime”:”2014-08-10T20:10:36.7158Z” }, { “title”:”home made patisserie”, “startDateTime”:”2014-08-10T20:08:45.0218Z” } ] 我试着把它解析成一个对象 public class Offer implements Serializable { public String title; public Date startDateTime; } Type collectionType = new TypeToken<ArrayList>() {}.getType(); mOffersList.addAll((Collection) gson.fromJson(result, collectionType)); 但是当我将“startDate”定义为Date时 我从gson回来的系列是空的 当我将“startDate”定义为String时 集合正确填充。 我想更改其日期格式。 这就是我更喜欢将其保存为Date对象的原因。 我努力了 Gson gson = new GsonBuilder().setDateFormat(“yyyy-MM-dd’T’HH:mm:ss.SSSZ”).create; 然而Gson无法解析服务器的字符串 Date […]

接口和@RequestBody

我目前正在开展一个项目,该项目允许用户在给定的时间段内(通过网络)预订所选资源的使用。 在这个程序中,我试图遵循Spring对接口编程的哲学(以及通用的最佳实践),因此我尝试在具体类之间重复function的任何地方使用接口。 我创建的一个接口称为BookableResourceController,它指定控制器处理所需的任何类型资源所需的最低function所需的方法。 我还使用了第二个接口BookableResource,它识别哪些对象模拟了允许通过应用程序预订的资源。 我目前遇到的问题是,BookableResourceController定义的一些方法使用@RequestBody映射将JSON对象转换为方法参数,并且由于Jackson只能将JSON转换为“SimpleType”对象,因此我收到错误我将输入参数指定为BookableResource。 @RequestMapping(value=”/delete.html”, method = RequestMethod.POST) public ModelAndView processDeleteResource( @RequestBody BookableResource resource); 无法构造org.codehaus.jackson.map.type.SimpleType的实例,问题:抽象类型只能使用其他类型信息进行实例化 据我所知,这个错误意味着我需要定义BookableResource的特定实现,这意味着我很可能需要从接口中排除这些方法,即使任何用于此目的的控制器都需要这些方法。 我要问的是,是否有人知道如何将接口定义为使用JSON的@RequestBody映射所期望的对象,或者是否有人建议如何构造我的控制器接口以包含这些方法? 干杯

如何解析JSON模式并创建默认的json对象或生成java类?

我确信之前有人这样做过:一个同事经历了制作JSON模式的麻烦,该模式可用于validationJSON对象; 但是,我很懒,只想从架构中生成一个“默认”的空JSON对象。 是否有捷径可寻? 我想用Java做到这一点。 如果失败了,有没有办法根据这个模式生成Java类(不是在运行时)? Muchas gracias,amigos。

如何让Gson使用访问器而不是字段?

默认情况下,Gson使用字段作为序列化的基础。 有没有办法让它改为使用访问器?

如何在Java中将Arraylist转换为Json

我有一个arraylist,arraylist拥有一堆Domain对象。 如下所示: Domain [domainId=19, name=a, dnsName=a.com, type=0, flags=0] Domain [domainId=20, name=b, dnsName=b.com, type=0, flags=12] Domain [domainId=21, name=c, dnsName=c.com, type=0, flags=0] Domain [domainId=22, name=d, dnsName=d.com, type=0, flags=0] 我的问题是如何将ArrayList转换为JSON? 数据格式应为: { “param”:{ “domain”:[ { “domid”:19, “name”:”a”, “dnsname”:”a.com”, “type”:0, “flags”: }, … ] }

如何区分Spring Rest Controller中部分更新的null值和未提供值

我试图在Spring Rest Controller中使用PUT请求方法部分更新实体时,区分空值和未提供的值。 以下面的实体为例: @Entity private class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; /* let’s assume the following attributes may be null */ private String firstName; private String lastName; /* getters and setters … */ } 我的人员库(Spring Data): @Repository public interface PersonRepository extends CrudRepository { } 我使用的DTO: private class PersonDTO { private […]

如何在jersey2 / hk2应用程序中获取Jackson Object Mapper的引用

我有一个jersey2应用程序配置为通过jackson支持JSON,添加 org.glassfish.jersey.media jersey-media-json-jackson ${jersey.version} 在POM文件中 public MyApplication() { … register(JacksonFeature.class) … } 在我的申请中。 一切正常,我的资源将反序列化的POJO作为参数 @POST @Consumes(MediaType.APPLICATION_JSON) public void blah(MyPojo p) { … } 现在,其中一个资源需要引用Jackson的ObjectMapper来自行进行反序列化。 我尝试过这样的事情 @Inject public MyResource(@Context ObjectMapper mapper) { … } 要么 @GET public String foo(@Context ObjectMapper mapper) { … } 但在这两种情况下,对mapper的引用都为null。 如何在我的资源中注入对ObjectMapper的引用?

将Java对象转换为Java Map

我正在使用org.eclipse.jetty.util.ajax.JSON来解析JSON文本。 但是JSON.parse(string)方法产生一个Object,我需要它作为Map。 在内部,它是完全提到的类的对象。 但是,如何在不构建新对象或获取未经检查的强制转换警告的情况下将对象转换为映射? 目前,我发现只有一个解决方案没有未经检查的强制转换警告,但是构建了一个新的Map,实际上当然不是一个强制转换。 private Map getMap(String string) { HashMap result = new HashMap(); Object object = JSON.parse(string); if (object instanceof Map) { Map map = (Map)(object); for (Map.Entry entry : map.entrySet()) { String key = entry.getKey().toString(); Object value = entry.getValue(); result.put(key,value); } } return result; } 那么是否有一种方法可以在没有未经检查的投射警告的情况下正确施放它?

Java中可靠的JSON字符串validation器

我需要一些可靠的JSON字符串validation器提供帮助 – 这是一种吸收字符串并检查它是否是有效JSON的方法。 例如:如果我通过{“color”:”red”}或{“amount”:15}它会通过,但”My invalid json”类的东西不会通过。 简而言之,我需要一些像www.jsonlint.comvalidation器一样可靠的东西。 顺便说一句 – 我对反序列化为java对象不感兴趣,因为这不是我的要求。 我可能会收到一个任意字符串,我所要做的就是validation它是否具有有效的JSON格式。 我已经在这个论坛上研究过几个关于java JSON字符串validation的post。 到目前为止我做了什么: 我尝试以下列方式使用这些类: org.json.JSONObject和org.json.JSONArray : private static boolean isValidJSONStringObject(String requestBody){ try { new JSONObject(requestBody); } catch (JSONException jsonEx) { return false; } return true; } private static boolean isValidJSONStringArray(String requestBody) { try { new JSONArray(requestBody); } catch (JSONException jsonEx) { return false; } […]

为什么使用Jersey在JSON中使用@返回名称

我使用的是JAXB,它是Jersey JAX-RS的一部分。 当我为输出类型请求JSON时,我的所有属性名称都以这样的星号开头, 这个对象; package com.ups.crd.data.objects; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlType; @XmlType public class ResponseDetails { @XmlAttribute public String ReturnCode = “”; @XmlAttribute public String StatusMessage = “”; @XmlAttribute public String TransactionDate =””; } 成为这个, {“ResponseDetails”:{“@transactionDate”:”07-12-2010″, “@statusMessage”:”Successful”,”@returnCode”:”0″} 那么,为什么名字中有@?