Tag: jackson

使用Jackson JSON Parser:复杂的JSON?

我有一个复杂的JSON,我试图使用Jackson JSON解析。 我对如何进入latLng对象以拉出lat,lng值感到有点困惑。 这是JSON的一部分: { “results”: [ { “locations”: [ { “latLng”: { “lng”: -76.85165, “lat”: 39.25108 }, “adminArea4”: “Howard County”, “adminArea5Type”: “City”, “adminArea4Type”: “County”, 到目前为止,我用Java来解决这个问题: public class parkJSON { public latLng _latLng; public static class latLng { private String _lat, _lng; public String getLat() { return _lat; } public String getLon() { return _lng; […]

你如何覆盖Jackson 2.0中的null序列化器?

我正在使用Jackson进行JSON序列化,并且我想覆盖null序列化程序 – 具体来说,因此空值在JSON中被序列化为空字符串而不是字符串“null”。 我在如何设置null序列化器时发现的所有文档和示例都是指Jackson 1.x – 例如, http: //wiki.fasterxml.com/JacksonHowToCustomSerializers底部的代码不再与Jackson 2.0编译因为库中不再存在StdSerializerProvider。 该网页描述了Jackson 2.0的模块接口,但模块接口没有明显的方法来覆盖null序列化器。 任何人都可以提供有关如何覆盖jackson2.0中的空序列化器的指针吗?

无法从START_ARRAY标记中反序列化java.util.HashMap的实例

使用jackson-core-2.7.3.jar解析JSON时遇到问题你可以从这里获取它们http://repo1.maven.org/maven2/com/fasterxml/jackson/core/ 我的JSON文件是 [ { “Name”: “System Idle Process”, “CreationDate”: “20160409121836.675345+330” }, { “Name”: “System”, “CreationDate”: “20160409121836.675345+330” }, { “Name”: “smss.exe”, “CreationDate”: “20160409121836.684966+330” } ] 而Java代码是我试图解析的 byte[] mapData = Files.readAllBytes(Paths.get(“process.txt”)); Map myMap = new HashMap(); ObjectMapper objectMapper=new ObjectMapper(); myMap = objectMapper.readValue(mapData, HashMap.class); System.out.println(“Map is: “+myMap); 但在执行时我收到了错误 com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.HashMap out of START_ARRAY […]

如何在REST Assured中访问底层的Jackson ObjectMapper?

我需要在REST Assured中配置底层的Jackson ObjectMapper。 我正在使用REST Assured编写REST API测试,我需要定义一些filter来注册ObjectMapper,用于将我的对象序列化为JSON: String newTestSuite = “{\”name\”:\”Added through Rest API\”,\”description\”:\”Test Description\”,\”steps\”:[]}”; FilterProvider filters = new SimpleFilterProvider().addFilter(“createNewTestSuite”, new NewTestSuiteFilter()); ObjectMapper om = new ObjectMapper(); om.setFilters(filters); try { TestSuite ts = om.readValue(newCaspianTest, TestSuite.class); RequestSpecification requestSpec = new RequestSpecBuilder() .setBaseUri(“https://somesite.com”) .setBody(ts) .setUrlEncodingEnabled(false) .build(); ResponseSpecification responseSpec = new ResponseSpecBuilder() .expectStatusCode(200) .expectStatusLine(Matchers.containsString(“200 OK”)) .build(); RestAssured.given() .auth().basic(“testUser”,”testPassword”) .spec(requestSpec) […]

Java JSON -Jackson-嵌套元素

我的JSON字符串具有嵌套值。 就像是 “[{“listed_count”:1720,”status”:{“retweet_count”:78}}]” 我想要retweet_count的值。 我正在使用jackson。 下面的代码输出“ {retweet_count=78} ”而不是78 。 我想知道我是否能以PHP的方式获得嵌套值,即status->retweet_count 。 谢谢。 import java.io.IOException; import java.util.List; import java.util.Map; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; public class tests { public static void main(String [] args) throws IOException{ ObjectMapper mapper = new ObjectMapper(); List <Map> fwers = mapper.readValue(“[{\”listed_count\”:1720,\”status\”:{\”retweet_count\”:78}}]]”, new TypeReference<List <Map>>() {}); System.out.println(fwers.get(0).get(“status”)); } }

将json对象解析为字符串

我有一个关于我正在构建的Web应用程序的问题,其中我有一个接收json字符串的REST服务。 Json字符串类似于: { “string” : “value”, “string” : “value”, “object” : { “string” : “value”, “string” : “value”, …. } } 我正在使用resteasy来解析使用下面的jackson的json字符串。 我有一个jaxb注释类,我想将“对象”完全解析为String变量。 我想这样做的原因是以后能够使用正确的解析器解析json(它取决于发送请求的应用程序,因此事先无法知道)。 我的jaxb注释类看起来像这样: @XmlRootElement @XmlAccessorType(XmlAccessType.PROPERTY) public class Test{ @XmlElement(type = String.class) private String object; //getter and setter … } 当我执行其余的调用并让jackson解析这段代码时,我得到了一个 Can not deserialize instance of java.lang.String out of START_OBJECT token 错误。 所以实际上我正在尝试将一个json字符串(一个json对象)解析为一个String。 我似乎找不到有类似问题的人。 […]

Jackson 2.1多态反序列化:如何在pojo上填充类型字段?

我从REST服务中提取了一个类别和项目树。 类别具有“子”属性,其中包含类别和/或项目列表。 它们的类型在“kind”字段中指定。 jackson的多态类型处理很棒,并且所有工作都按预期工作,除了一个小故障:“种类”字段本身没有填充。 有没有一种简单的方法可以将这些数据输入pojos? 我希望不必编写自定义反序列化器。 这是Category和Item的基类。 这两个子类添加了几个标量字段,并不是很有趣。 @JsonIgnoreProperties(ignoreUnknown=true) @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = “kind”, defaultImpl = EntityBase.Impl.class ) @JsonSubTypes({ @Type(value = Item.class, name = “Item”), @Type(value = Category.class, name = “Category”) }) public abstract class EntityBase { String title; String kind; public void setTitle(String title) { this.title = title; } […]

jackson在json中添加了反斜杠

我正在Jersey上构建REST服务,并使用Jackson从我的模型的java类生成JSON。 模型具有绝对简单的值,我认为这是最典型的情况。 但我得到了奇怪的结果: [{\”name\”:\”Nick\”,\”role\”:\”admin\”,\”age\”:\”32\”,\”rating\”:47}] 我期待的结果: [{“name”:”Nick”,”role”:”admin”,”age”:”32″,”rating”:47}] 我的字段源值不包含任何特殊字符。 这些都是简单的话。 有我的Java课程。 实体: public class User { private String name; private String role; private String age; private Integer rating; rest服务类别: @ServiceConfig(contextName = “myContext”) @Path(“/myrest”) public class MyRestService { private static final String JSON_CONTENT_TYPE = MediaType.APPLICATION_JSON + “;charset=UTF-8”; @Context protected HttpServletResponse response; @GET @Path(“/users”) @OpenTransaction @Produces({MediaType.APPLICATION_JSON}) public String findUsers(@QueryParam(“department”) […]

定制jackson解串器获取当前现场类

我正在尝试为jackson编写一个自定义反序列化器,我想让它成为通用的(在任何类型的工作意义上都是通用的,而不是在“generics”中)。 但是我似乎无法弄清楚如何处理被反序列化的字段类型。 例如,我正在寻找以下内容: @Override public MyObject deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { Class c = // do something with that type return new SubclassOfC(somedata based on c); } 这是我一直在努力的当前领域部分的获取类型 。 编辑:这是我感兴趣的java字段的类型。

使用jackson解析Json文件

{ “TestSuite”:{ “TestSuiteInfo”:{ “-description”:”parse” }, “TestCase”:[ { “TestCaseData”:{ “-sequence”:”sequential”, “-testNumber”:”2″, “-testCaseFile”:”testcase\\Web\\Ab.xml” } }, { “TestCaseData”:{ “-sequence”:”sequential”, “-testNumber”:”3″, “-testCaseFile”:”testcase\\Web\\BC.xml” } } ] } } 我的Pojos是: public class TestSuite { private TestSuiteInfo testSuiteInfo; private TestCase listOfTestCases; public TestSuiteInfo getTestSuiteInfo() { return testSuiteInfo; } public void setTestSuiteInfo(TestSuiteInfo testSuiteInfo) { this.testSuiteInfo = testSuiteInfo; } public TestCase getListOfTestCases() { return […]