Questions tagged «jackson»

Jackson是一个Java库,用于处理诸如读写(解析/生成)以及与Java对象之间的数据绑定之类的任务。尽管主要用于JSON,但Jackson还支持许多其他数据格式,例如Avro,CBOR,CSV,Java属性,Protobuf,Smile,XML和YAML。

13
Jackson Databind枚举不区分大小写
如何反序列化包含不区分大小写的枚举值的JSON字符串?(使用Jackson Databind) JSON字符串: [{"url": "foo", "type": "json"}] 和我的Java POJO: public static class Endpoint { public enum DataType { JSON, HTML } public String url; public DataType type; public Endpoint() { } } 在这种情况下,使用JSON反序列化"type":"json"将无法"type":"JSON"正常进行。但"json"出于命名约定的原因,我也想工作。 序列化POJO也会导致大写 "type":"JSON" 我想到了使用@JsonCreator@JsonGetter: @JsonCreator private Endpoint(@JsonProperty("name") String url, @JsonProperty("type") String type) { this.url = url; this.type = …

10
杰克逊通过删除'is'重命名原始布尔字段
这可能是重复的。但是我找不到解决问题的方法。 我有一堂课 public class MyResponse implements Serializable { private boolean isSuccess; public boolean isSuccess() { return isSuccess; } public void setSuccess(boolean isSuccess) { this.isSuccess = isSuccess; } } 获取器和设置器由Eclipse生成。 在另一个类中,我将该值设置为true,并将其写为JSON字符串。 System.out.println(new ObjectMapper().writeValueAsString(myResponse)); 在JSON中,关键字为{"success": true}。 我想要钥匙isSuccess本身。杰克逊在序列化时是否使用setter方法?如何使关键字成为字段名称本身?
97 java  json  jackson 

4
如何使用Jackson将JSON字符串解析为数组
我具有String以下值: [ { "key1": "value11", "key2": "value12" }, { "key1": "value21", "key2": "value22" } ] 和以下类: public class SomeClass { private String key1; private String key2; /* ... getters and setters omitted ...*/ } 我想将其解析为a List<SomeClass>或aSomeClass[] 使用Jackson的 方法最简单ObjectMapper?
96 java  json  jackson 

20
java.lang.IllegalArgumentException:未找到类型返回值的转换器
有了这个代码 @RequestMapping(value = "/bar/foo", method = RequestMethod.GET) public ResponseEntity<foo> foo() { Foo model; ... return ResponseEntity.ok(model); } } 我得到以下异常 java.lang.IllegalArgumentException: No converter found for return value of type 我的猜测是,由于缺少Jackson,该对象无法转换为JSON。我不明白为什么,因为我以为杰克逊内置弹簧靴。 然后我试图将Jackson添加到pom.xml中,但是我仍然遇到相同的错误 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.4.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.3</version> </dependency> 我是否必须更改任何Spring Boot属性才能使其正常工作? 谢谢

6
某些字段的Jackson JSON自定义序列化
有没有一种使用Jackson JSON Processor进行自定义字段级序列化的方法?例如,我想上课 public class Person { public String name; public int age; public int favoriteNumber; } 序列化为以下JSON: { "name": "Joe", "age": 25, "favoriteNumber": "123" } 请注意,age = 25被编码为数字,而favoriteNumber = 123被编码为string。杰克逊开箱int即用。在这种情况下,我希望将favoriteNumber编码为字符串。

3
使用Jackson的ObjectMapper的JSON对象的顺序
我正在使用ObjectMapper进行java-json映射。 ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); ow.writeValue(new File( fileName +".json"), jsonObj); 这是我的java类: public class Relation { private String id; private String source; private String target; private String label; private List<RelAttribute> attributes; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getSource() …
91 java  json  jackson 

12
在Spring中配置ObjectMapper
我的目标是配置objectMapper方式,使其仅序列化带有注释的元素@JsonProperty。 为了做到这一点,我按照以下说明进行了说明,该说明说明了如何配置对象映射器。 我包括自定义描述objectmapper这里。 但是,当类NumbersOfNewEvents被序列化时,它仍包含json中的所有属性。 有人暗示吗?提前致谢 杰克逊1.8.0春季3.0.5 CustomObjectMapper public class CompanyObjectMapper extends ObjectMapper { public CompanyObjectMapper() { super(); setVisibilityChecker(getSerializationConfig() .getDefaultVisibilityChecker() .withCreatorVisibility(JsonAutoDetect.Visibility.NONE) .withFieldVisibility(JsonAutoDetect.Visibility.NONE) .withGetterVisibility(JsonAutoDetect.Visibility.NONE) .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE) .withSetterVisibility(JsonAutoDetect.Visibility.DEFAULT)); } } servlet.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <context:component-scan base-package="de.Company.backend.web" /> <mvc:annotation-driven /> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> …

14
不能让杰克逊和龙目岛一起工作
我正在尝试结合杰克逊和龙目岛。这些是我的课程: package testelombok; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Value; import lombok.experimental.Wither; @Value @Wither @AllArgsConstructor(onConstructor=@__(@JsonCreator)) public class TestFoo { @JsonProperty("xoom") private String x; private int z; } package testelombok; import com.fasterxml.jackson.databind.ObjectMapper; import com.xebia.jacksonlombok.JacksonLombokAnnotationIntrospector; import java.io.IOException; public class TestLombok { public static void main(String[] args) throws IOException { TestFoo tf …

7
用Jackson序列化枚举
我下面有一个枚举: public enum OrderType { UNKNOWN(0, "Undefined"), TYPEA(1, "Type A"), TYPEB(2, "Type B"), TYPEC(3, "Type C"); private Integer id; private String name; private WorkOrderType(Integer id, String name) { this.id = id; this.name = name; } //Setters, getters.... } 我用控制器(new OrderType[] {UNKNOWN,TYPEA,TYPEB,TYPEC};)返回枚举数组,Spring将其序列化为以下json字符串: ["UNKNOWN", "TYPEA", "TYPEB", "TYPEC"] 强迫Jackson像POJO一样序列化枚举的最佳方法是什么?例如: [ {"id": 1, "name": …

6
如何使用Jackson注释将嵌套值映射到属性?
假设我正在调用一个API,该API用产品的以下JSON响应: { "id": 123, "name": "The Best Product", "brand": { "id": 234, "name": "ACME Products" } } I'm able to map the product id and name just fine using Jackson annotations: public class ProductTest { private int productId; private String productName, brandName; @JsonProperty("id") public int getProductId() { return productId; } …
90 java  json  jackson 

6
杰克逊+建设者模式?
我希望Jackson用以下构造函数反序列化一个类: public Clinic(String name, Address address) 反序列化第一个参数很容易。问题在于地址定义为: public class Address { private Address(Map<LocationType, String> components) ... public static class Builder { public Builder setCity(String value); public Builder setCountry(String value); public Address create(); } } 并构造如下: new Address.Builder().setCity("foo").setCountry("bar").create(); 有没有办法从Jackson那里获取键值对,以便自己构造地址?另外,是否有办法让Jackson本身使用Builder类?
89 java  json  jersey  jackson 

14
避免在未获取的惰性对象上进行Jackson序列化
我有一个返回用户对象的简单控制器,该用户的属性坐标具有休眠属性FetchType.LAZY。 当我尝试获取该用户时,我总是必须加载所有坐标才能获取用户对象,否则,当杰克逊尝试序列化User时,将抛出异常: com.fasterxml.jackson.databind.JsonMappingException:无法初始化代理-没有会话 这是由于Jackson试图获取此未获取的对象。这里是对象: public class User{ @OneToMany(fetch = FetchType.LAZY, mappedBy = "user") @JsonManagedReference("user-coordinate") private List<Coordinate> coordinates; } public class Coordinate { @ManyToOne @JoinColumn(name = "user_id", nullable = false) @JsonBackReference("user-coordinate") private User user; } 和控制器: @RequestMapping(value = "/user/{username}", method=RequestMethod.GET) public @ResponseBody User getUser(@PathVariable String username) { User user = userService.getUser(username); …

7
java.lang.ClassCastException:无法将java.util.LinkedHashMap强制转换为com.testing.models.Account
我遇到以下错误: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.testing.models.Account 用下面的代码 final int expectedId = 1; Test newTest = create(); int expectedResponseCode = Response.SC_OK; ArrayList<Account> account = given().when().expect().statusCode(expectedResponseCode) .get("accounts/" + newTest.id() + "/users") .as(ArrayList.class); assertThat(account.get(0).getId()).isEqualTo(expectedId); 我为什么不能这样做get(0)?

4
如何使用JsonCreator使用重载的构造函数反序列化类
我正在尝试使用Jackson 1.9.10反序列化此类的实例: public class Person { @JsonCreator public Person(@JsonProperty("name") String name, @JsonProperty("age") int age) { // ... person with both name and age } @JsonCreator public Person(@JsonProperty("name") String name) { // ... person with just a name } } 当我尝试这个我得到以下 冲突的基于属性的创建者:已经... {interface org.codehaus.jackson.annotate.JsonCreator @ org.codehaus.jackson.annotate.JsonCreator()}],遇到...,注释:{interface org.codehaus。 jackson.annotate.JsonCreator @ org.codehaus.jackson.annotate.JsonCreator()}] 有没有办法使用Jackson重载带有重载的构造函数的类? …
82 java  json  jackson 

9
Jackson ObjectMapper-指定对象属性的序列化顺序
我正在实现RESTful Web服务,其中用户必须与请求一起发送签名的验证令牌,以便可以确保请求不会被中间人篡改。我当前的实现如下。 验证令牌是VerifData对象,序列化为String,然后进行哈希处理和加密。 class VerifData { int prop1; int prop2; } 在我的服务中,我将要序列化的数据放入VerifData的实例中,然后使用Jackson ObjectMapper对其进行序列化,并与验证令牌一起传递给验证引擎。 VerfiData verifData = new VerifData(12345, 67890); ObjectMapper mapper = new ObjectMapper(); String verifCodeGenerated = mapper.writeValueAsString(verifData); 但是似乎每次启动应用程序容器时,ObjectMapper映射到字符串的属性的顺序都会改变。 例如:一次 {"prop1":12345,"prop2":67890} 再过一次 {"prop2":67890,"prop1":12345} 因此,如果客户端将VerifData实例序列化为第一个String,则即使它是正确的,也有50%的机会失败。 有办法解决这个问题吗?是否可以指定要按ObjectMapper映射的属性的顺序(如升序)?还是有其他方法可以最好地实施此验证步骤。客户端和服务器实现都是我开发的。我使用Java Security API进行签名和验证。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.