我的 Json 看起来像(并且它不可修改)
{
    ....
    "Sale": [
        "SaleLines": {
                    "SaleLine": [
                        {
                            "Item": {
                                "Prices": {
                                    "ItemPrice": [
                                        {
                                            "amount": "100",
                                            "useType": "Default"
                                        },
                                        {
                                            "amount": "100",
                                            "useType": "MSRP"
                                        }
                                    ]
                                },
                            }
                                ......
                                ......
                        } 
                ] 
            "calcDiscount": "0",
            "calcSubtotal": "500",
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)
java POJO 代码看起来像
public static class SaleLines {
    @JsonProperty("SaleLine")
    private SaleLineObject[] saleLineObject;
    public SaleLineObject[] getSaleLineObject() { return saleLineObject; }
    public void setSaleLineObject(SaleLineObject[] saleLineObject) { this.saleLineObject = saleLineObject; }
}
public static class SaleLineObject {
    private SaleLine …Run Code Online (Sandbox Code Playgroud) 我使用 Jackson ObjectMapper 将对象层次结构序列化为 json String。之后我想反序列化对象。我有如下异常。
重要的是APINewDealArrangementImpl类层次结构超出了我的更改范围——它是外部库的一部分。在这种情况下,我无法实现默认构造函数,也无法使用@JsonCreatorannotion。
如何避免“找不到合适的构造函数”异常?是否可以使用TypeResolverBuilderJackson API 中的一些自定义实现或其他功能来解决这个问题?感谢帮助。
org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class com.tzero.api.transactions.TransactionState]: can not instantiate from JSON object (need to add/enable type information?)
 at [Source: java.io.StringReader@57ac3379; line: 4, column: 5] (through reference chain: com.tzero.api.java.transactions.APINewDealArrangementImpl["state"])
    at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
    at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:746)
    at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:683)
    at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
    at org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299)
    at org.codehaus.jackson.map.deser.SettableBeanProperty$MethodProperty.deserializeAndSet(SettableBeanProperty.java:414)
    at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697)
    at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
    at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732)
    at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863)
Run Code Online (Sandbox Code Playgroud) 假设我有一个枚举类,如下所示:
public enum Lang {
    ENGLISH("en_US"), FRENCH("fr_CA");
    String val;
    Lang(String val) {
       this.val = val;
    }
    public String getValue() {
        return val;
    }
}
Run Code Online (Sandbox Code Playgroud)
我有一个 POJO 如下:
public class Foo {
    private String bar;
    private Lang lang;
    public String getBar() {
        return bar;
    }
    public void setBar(String bar) {
        this.bar = bar;
    }
    public Lang getLang() {
        return lang;
    }
    public void setLang(Lang lang) {
        this.lang = lang;
    }
}
Run Code Online (Sandbox Code Playgroud)
如何配置 Jackson 以将以下有效负载转换为 POJO 类?
{ "bar": "someValue", "lang": "en-US"} …
class Request {     
     private String requestid;
     private String contenttype;
     private String service;
     private String requestjson;
}
Run Code Online (Sandbox Code Playgroud)
使用对象映射器将此对象制作为 json 但映射器正在返回我
"requestjson\":\"{\\\"username\\\":\\\"farhan\\\",\\\"password\\\":\\\"farhaan\\\"}\"}"}
Run Code Online (Sandbox Code Playgroud)
我怎样才能删除这个额外的
\\\
Run Code Online (Sandbox Code Playgroud)
我试过
 jsonOutput.replaceAll("\"",Character.toString ((char) 34));
Run Code Online (Sandbox Code Playgroud) 我需要一个JSON - > Pojo - > JSON转换.
我调查了主流图书馆Jackson和GSON,
显然两者都使用:
//write converted json data to a file named "file.json"
FileWriter writer = new FileWriter("c:\\file.json");
or In\Output Streams..
Run Code Online (Sandbox Code Playgroud)
当我编写新代码时,有两件事吓到我了:
我尽可能地避免这两种情况.
有没有其他方法可以做到这一点?
我正在编写一个 Spring RESTful 服务,它使用 JSON 并执行一些操作。由于请求包含大量参数,我想到了使用 Spring 的 Jackson 映射将我的请求参数映射到 Java 对象。
我的POJO
public class RequestInput {
 private int id;
 private String name;
 // parameters follow
 // getter and setter
}
Run Code Online (Sandbox Code Playgroud)
我的控制器
@Controller
public class RequestController{
   @RequestMapping(method=RequestMethod.POST, value="/rest/postRequest")
   public void handleRequest(@RequestBody RequestInput input){
          // code follows
   }
}
Run Code Online (Sandbox Code Playgroud)
数据发布时一切正常
{“id”:1,“名称”:“ABCD”}
但是当数据发布为
{“id”:1,“first_name”:“ABCD”}
对象中名称的值作为 返回NULL。
你能帮我理解如何将请求中的 first_name 映射到 Java POJO 中的 name param
为什么 Jackson 的 TypeReference 是抽象的?它通常会使用法变得更丑陋,因为您需要包含大括号来创建内联类(并且大多数 linter 强制您在同一行上没有大括号)。
new TypeReference<Map<String, String>>() {
};
Run Code Online (Sandbox Code Playgroud)
这是由于一些晦涩的 Java 语言限制吗?
我想知道 JACKSON 和 JSON 之间的区别?我在 android 中使用 JSON 数据格式。告诉我 JACKSON 和 JSON 的优缺点?