Tag: json

使用Jackson在Java中解析JSON的子集

鉴于Json,是否可以使用Jackson来解析消息的一部分? 假设我感兴趣的数据埋藏在深层次的字段中,我根本不关心为每个类创建DTO类。 鉴于一个非常简化的场景,我想在不知道任何关于它之前的结构的情况下对Telephone类进行建模: …{ “firstName”: “John”, “lastName” : “doe”, “age” : 26, “address” : { “streetAddress”: “naist street”, “city” : “Nara”, “postalCode” : “630-0192” }, “phoneNumbers”: [ { “type” : “iPhone”, “number”: “0123-4567-8888” }, { “type” : “home”, “number”: “0123-4567-8910” } ] }…. 我正在考虑使用json-path和反序列化我感兴趣的部分。 一些伪: List phoneNrs = parse(“.my.deep.structure.persons.phoneNumbers”, List);

jacksonJSON – unmarshal上的“没有单字符串构造函数/工厂方法”错误

最简单的情况会给我带来麻烦。 我第一次遇到它。 我能够解组稍微复杂的json,但这个简单的失败了。 什么会导致这个以及为什么jackson只用一根弦就麻烦了? 一个包含用户角色名称的简单类。 public class UpdateUserRole { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } 控制器内部 public void updateUserRole(@PathVariable Long id, @RequestBody UpdateUserRoleReq req) { } 一旦jackson看到这一点,它就会抛出这个错误 org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not instantiate value of type [simple type, class […]

在Spring MVC中使用Jackson JSON时,如何默认启用Pascal大小写?

我有一个使用Spring MVC创建和处理多个REST端点的项目。 我目前正致力于使用Jackson自动处理使用@RequestBody和@ResponseBody注释的JSON的分类/反序列化。 我让jackson工作了,所以我有一个起点。 我的问题是我们的旧序列化手动完成并使用Pascal套管而不是Camel套管(“MyVariable”而不是“myVariable”),jackson默认使用Camel套管。 我知道我可以使用@JsonProperty手动更改变量的名称。 话虽这么说,我不认为将@JsonProperty添加到我的所有变量中是一个可行的长期解决方案。 除了使用@JsonProperty注释之外,有没有办法让Jackson在序列化和反序列化时使用Pascal大小写? 编辑:看起来外部没有干净的方法。 有几个人建议重写不同的课程,以此来实现我的目标。 我愿意接受有关我可以改写的改变套管的建议。 目前我已经创建了一个自定义的ObjectMapper来设置我想要的一些属性(即Inclusion.NON_NULL )。 我还没有找到任何可以让我改变套管行为的地方。 有什么想法吗?

有没有办法将JSON Schema转换为XSD?

我目前正在寻找一种将JSON Schema转换为XSD或XML模式的方法。 我没有在这个主题上找到任何东西,希望也许有人在这里知道。 我希望用Java API来做。

阻止GSON序列化JSON字符串

我是gson的新手,并且有一些我没有找到答案的新问题,所以请耐心等待。 StackOverflow和谷歌不是我的朋友:( 我有一个java类“User”,其中一个属性“externalProfile”是一个包含已经序列化的JSON的Java String。 当gson序列化User对象时,它会将externalProfile视为原语,从而转义JSON添加额外的斜杠等。我希望gson单独保留字符串,只是“按原样”使用它,因为它已经是有效且可用的JSON。 为了区分JSON字符串,我创建了一个名为JSONString的简单类,我尝试使用reader / writers,registerTypeAdapter,但没有任何作用。 你能帮我吗? public class User { private JSONString externalProfile; public void setExternalProfile(JSONString externalProfile) { this.externalProfile = externalProfile; } } public final class JSONString { private String simpleString; public JSONString(String simpleString) { this.simpleString = simpleString; } } public customJsonBuilder(Object object) { GsonBuilder builder = new GsonBuilder(); builder.registerTypeAdapter(GregorianCalendar.class, new JsonSerializer() […]

Json(fasterxml)stackoverflowexception

尝试序列化类别时,我得到一个stackoverflow。 例外 警告:StandardWrapperValve [dispatcher]:servlet调度程序的Servlet.service()在java.lang.ClassLoader.defineClass(ClassLoader.java:760)的java.lang.ClassLoader.defineClass1(本机方法)中抛出exceptionjava.lang.StackOverflowError at org.apache.felix.framework.BundleWiringImpl $ BundleClassLoader.findClass(BundleWiringImpl.java:2279)位于org.apache.felix.framework.BundleWiringImpl的org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1501)。在com.fasterxml的java.lang.ClassLoader.loadClass(ClassLoader.java:357)的org.apache.felix.framework.BundleWiringImpl $ BundleClassLoader.loadClass(BundleWiringImpl.java:1955)访问$ 400(BundleWiringImpl.java:75)。 jackon.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:660),位于com.fasterxml.jackson.databind.ser的com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:152)。 impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:1 00)com的com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:21)at com.fasterxml.jackson.databind.ser.std.AsArraySerializerBase.serialize(AsArraySerializerBase.java:183)at com位于com.fasterxml.jackson.databind的com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:644)中的.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:541) .ser.BeanSerializer.serialize(BeanSerializer.java:152) Category.java @Entity public class Category implements DataObject, Serializable { @Id @GeneratedValue private Long id; private String title; private String description; @ManyToOne @JsonIgnore private Category parent; @Override public long getId() { return id; } @Override public void setId(long id) […]

如何转换Jackson和Gson之间的日期?

在我们的Spring配置的REST服务器中,我们使用Jackson将对象转换为Json。 该对象包含几个java.util.Date对象。 当我们尝试使用Gson的fromJson方法在Android设备上反序列化它时,我们得到一个“java.text.ParseException:Unparseable date”。 我们已经尝试将日期序列化为自1970年以来相应于毫秒的时间戳,但得到相同的exception。 可以将Gson配置为将时间戳格式的日期(例如1291158000000)解析为java.util.Date对象吗?

序列化到json响应时避免hibernate延迟初始化exception的更好方法

这是参考我一个月前提出的问题 。 在这个问题中 ,当json序列化时避免延迟初始化exception的答案是将null设置为导致延迟初始化exception的变量。 但是考虑一下这个类有多少依赖关系。 现在随着代码库的增长而每次我都要将代码中的麻烦变量设置为null以避免json序列化问题。 当代码库很大时,该方法看起来不整洁。 下面显示的示例代码看起来不太好。 //setting some variables to avoid lazy init exception in jackson mapper serialization batch.setEnrollmentList(null); List scheduleList = (ArrayList) batch.getBatchScheduleList(); for (BatchSchedule batchSchedule : scheduleList) { batchSchedule.setBatch(null); } batch.getLecturer().setBatchList(null); batch.getLecturer().setSubjectList(null); batch.getSubject().setBatchList(null); batch.getSubject().setLecturerList(null); 你能否告诉我一个更好的方法来处理这个问题。 谢谢。

将json发布到spring mvc控制器

控制器签名(我也尝试过请求者): @RequestMapping(value = “/Lame”, method = RequestMethod.POST) public @ResponseBody boolean getLame(@RequestParam String strToMatchA, @RequestParam String strToMatchB) {} 这是我的json: { “strToMatchA”: “EN”, “strToMatchB”: “lon” } 不工作,我收到错误: org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter ‘strToMatchA’ is not present 从方法签名中删除第一个参数然后使其工作(方法被正确调用),我该怎么办? 当我更改要使用@RequestBody注释的方法参数时,我收到以下错误: java.io.IOException: Stream closed

无法validationserde:org.openx.data.jsonserde.jsonserde

我写了这个查询来在hive上创建一个表。 我的数据最初是json格式,所以我已下载并构建serde并添加了运行所需的所有jar。 但我收到以下错误: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Cannot validate serde: org.openx.data.jsonserde.JsonSerDe 查询: create table tip(type string, text string, business_id string, user_id string, date date, likes int) ROW FORMAT SERDE ‘org.openx.data.jsonserde.JsonSerDe’ WITH SERDEPROPERTIES(“date.mapping”=”date”) STORED AS TEXTFILE;