คำถามติดแท็ก jackson

Jackson เป็นไลบรารี Java สำหรับจัดการงานต่างๆเช่นการอ่านและการเขียน (การแยกวิเคราะห์ / สร้าง) และการเชื่อมโยงข้อมูลกับ / จากวัตถุ Java แม้ว่าจะใช้สำหรับ JSON เป็นหลัก แต่ Jackson ยังรองรับรูปแบบข้อมูลอื่น ๆ อีกมากมายเช่น Avro, CBOR, CSV, Java Properties, Protobuf, Smile, XML และ YAML

5
Deserialize JSON เป็น ArrayList <POJO> โดยใช้ Jackson
ฉันมีคลาส Java MyPojoที่ฉันสนใจที่จะ deserializing จาก JSON ฉันได้กำหนดค่าคลาส MixIn พิเศษMyPojoDeMixInเพื่อช่วยฉันในการ deserialization MyPojoมีเฉพาะintและStringตัวแปรอินสแตนซ์รวมกับ getters และ setters ที่เหมาะสม MyPojoDeMixInมีลักษณะดังนี้: public abstract class MyPojoDeMixIn { MyPojoDeMixIn( @JsonProperty("JsonName1") int prop1, @JsonProperty("JsonName2") int prop2, @JsonProperty("JsonName3") String prop3) {} } ในไคลเอนต์ทดสอบของฉันฉันทำสิ่งต่อไปนี้ แต่แน่นอนว่ามันใช้ไม่ได้ในเวลาคอมไพล์เนื่องจากมีความJsonMappingExceptionเกี่ยวข้องกับประเภทที่ไม่ตรงกัน ObjectMapper m = new ObjectMapper(); m.getDeserializationConfig().addMixInAnnotations(MyPojo.class,MyPojoDeMixIn.class); try { ArrayList&lt;MyPojo&gt; arrayOfPojo = m.readValue(response, MyPojo.class); } catch …
100 java  json  mapping  jackson 

4
วิธีแยกวิเคราะห์สตริง JSON ไปยังอาร์เรย์โดยใช้ Jackson
ฉันมีStringค่าต่อไปนี้: [ { "key1": "value11", "key2": "value12" }, { "key1": "value21", "key2": "value22" } ] และคลาสต่อไปนี้: public class SomeClass { private String key1; private String key2; /* ... getters and setters omitted ...*/ } และฉันต้องการแยกวิเคราะห์เป็น a List&lt;SomeClass&gt;หรือSomeClass[] ซึ่งเป็นวิธีที่ง่ายที่สุดในการทำโดยใช้แจ็คสัน ObjectMapper ?
98 java  json  jackson 

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" } หมายเหตุว่าอายุ = 25 จะถูกเข้ารหัสเป็นจำนวนขณะ favoriteNumber = 123 ถูกเข้ารหัสเป็นสตริง ออกจากมาร์แชลกล่องแจ็คสันintเป็นตัวเลข ในกรณีนี้ฉันต้องการให้ favoriteNumber เข้ารหัสเป็นสตริง

20
java.lang.IllegalArgumentException: ไม่พบตัวแปลงสำหรับค่าส่งคืนของชนิด
ด้วยรหัสนี้ @RequestMapping(value = "/bar/foo", method = RequestMethod.GET) public ResponseEntity&lt;foo&gt; foo() { Foo model; ... return ResponseEntity.ok(model); } } ฉันได้รับข้อยกเว้นดังต่อไปนี้ java.lang.IllegalArgumentException: No converter found for return value of type ฉันเดาว่าออบเจ็กต์ไม่สามารถแปลงเป็น JSON ได้เนื่องจาก Jackson หายไป ฉันไม่เข้าใจว่าเพราะอะไรฉันคิดว่าแจ็คสันถูกสร้างขึ้นด้วยสปริงบูต จากนั้นฉันได้พยายามเพิ่ม Jackson ใน pom.xml แต่ฉันยังคงมีข้อผิดพลาดเดียวกัน &lt;dependency&gt; &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt; &lt;artifactId&gt;jackson-core&lt;/artifactId&gt; &lt;version&gt;2.4.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt; &lt;artifactId&gt;jackson-databind&lt;/artifactId&gt; &lt;version&gt;2.4.3&lt;/version&gt; &lt;/dependency&gt; ฉันต้องเปลี่ยนคุณสมบัติสปริงบูตเพื่อให้ใช้งานได้หรือไม่? …

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 …

12
การกำหนดค่า ObjectMapper ใน Spring
เป้าหมายของฉันคือการกำหนดค่าobjectMapperในทางที่มัน serialises @JsonPropertyองค์ประกอบซึ่งมีคำอธิบายประกอบกับ ในการดำเนินการดังกล่าวฉันทำตามคำอธิบายนี้ซึ่งระบุวิธีกำหนดค่า objectmapper ผมรวม 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 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;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 …

10
Jackson เปลี่ยนชื่อฟิลด์บูลีนดั้งเดิมโดยการลบ 'is'
สิ่งนี้อาจซ้ำกัน แต่ฉันไม่สามารถหาวิธีแก้ไขปัญหาของฉันได้ ฉันมีชั้นเรียน public class MyResponse implements Serializable { private boolean isSuccess; public boolean isSuccess() { return isSuccess; } public void setSuccess(boolean isSuccess) { this.isSuccess = isSuccess; } } Getters และ setters ถูกสร้างขึ้นโดย Eclipse ในคลาสอื่นฉันตั้งค่าเป็นจริงและเขียนเป็นสตริง JSON System.out.println(new ObjectMapper().writeValueAsString(myResponse)); ใน JSON คีย์จะมาเป็น{"success": true}ไฟล์. ฉันต้องการกุญแจเหมือนisSuccessตัวมันเอง แจ็คสันใช้วิธีเซ็ตเตอร์ในขณะที่อนุกรมหรือไม่ จะทำให้คีย์เป็นชื่อฟิลด์เองได้อย่างไร?
94 java  json  jackson 

6
จะแมปค่าที่ซ้อนกันกับคุณสมบัติโดยใช้คำอธิบายประกอบ Jackson ได้อย่างไร
สมมติว่าฉันกำลังโทรไปยัง API ที่ตอบสนองด้วย JSON ต่อไปนี้สำหรับผลิตภัณฑ์: { "id": 123, "name": "The Best Product", "brand": { "id": 234, "name": "ACME Products" } } ฉันสามารถแมปรหัสผลิตภัณฑ์และชื่อได้โดยใช้คำอธิบายประกอบของ Jackson: public class ProductTest { private int productId; private String productName, brandName; @JsonProperty("id") public int getProductId() { return productId; } public void setProductId(int productId) { this.productId = productId; …
93 java  json  jackson 

3
ลำดับของวัตถุ JSON โดยใช้ ObjectMapper ของ Jackson
ฉันใช้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&lt;RelAttribute&gt; attributes; public String getId() { return id; } public void setId(String id) { this.id = id; } …
92 java  json  jackson 

7
การต่ออนุกรม enums กับแจ็คสัน
ฉันมี Enum desrcibed ด้านล่าง: 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.... } ฉันส่งคืนอาร์เรย์ enum ด้วยคอนโทรลเลอร์ของฉัน ( new OrderType[] {UNKNOWN,TYPEA,TYPEB,TYPEC};) และ Spring …

6
แบบแจ็คสัน + บิลเดอร์?
ฉันต้องการให้แจ็คสันยกเลิกการกำหนดค่าคลาสด้วยตัวสร้างต่อไปนี้: public Clinic(String name, Address address) การแยกอาร์กิวเมนต์แรกเป็นเรื่องง่าย ปัญหาคือ Address ถูกกำหนดเป็น: public class Address { private Address(Map&lt;LocationType, String&gt; 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 เพื่อสร้าง Address ด้วยตัวเองหรือไม่? หรือมีวิธีทำให้ Jackson ใช้คลาส …
89 java  json  jersey  jackson 

6
MockMvc ไม่สามารถจัดการอักขระ UTF-8 อีกต่อไปด้วย Spring Boot 2.2.0 ปล่อย
หลังจากฉันอัพเกรดเป็น2.2.0.RELEASESpring Boot เวอร์ชั่นที่ออกใหม่การทดสอบบางอย่างของฉันล้มเหลว ปรากฏว่าMediaType.APPLICATION_JSON_UTF8ได้รับการคัดค้านและจะไม่ส่งคืนเป็นประเภทเนื้อหาเริ่มต้นจากวิธีการควบคุมที่ไม่ได้ระบุประเภทเนื้อหาอย่างชัดเจน ทดสอบรหัสเช่น String content = mockMvc.perform(get("/some-api") .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) .andReturn() .getResponse() .getContentAsString(); ทันใดนั้นไม่ทำงานอีกต่อไปเนื่องจากประเภทเนื้อหาไม่ตรงกันดังที่แสดงด้านล่าง java.lang.AssertionError: Content type Expected :application/json;charset=UTF-8 Actual :application/json การเปลี่ยนรหัสเพื่อ.andExpect(content().contentType(MediaType.APPLICATION_JSON))แก้ไขปัญหาในตอนนี้ แต่ตอนนี้เมื่อเปรียบเทียบcontentกับวัตถุที่เป็นอนุกรมที่คาดไว้ยังคงไม่ตรงกันหากมีอักขระพิเศษใด ๆ ในวัตถุ ปรากฏว่า.getContentAsString()วิธีการดังกล่าวไม่ได้ใช้ประโยชน์จากการเข้ารหัสอักขระ UTF-8 ตามค่าเริ่มต้น (เพิ่มเติม) java.lang.AssertionError: Response content expected:&lt;[{"description":"Er hörte leise Schritte hinter sich."}]&gt; but was:&lt;[{"description":"Er hörte leise Schritte hinter sich."}]&gt; Expected :[{"description":"Er hörte …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.