Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jackson将JSON反序列化为原始格式的字符串_Json_Jackson_Deserialization_Json Deserialization - Fatal编程技术网

使用Jackson将JSON反序列化为原始格式的字符串

使用Jackson将JSON反序列化为原始格式的字符串,json,jackson,deserialization,json-deserialization,Json,Jackson,Deserialization,Json Deserialization,我有一个用例,我希望JSON按原样转换为字符串,但它失败了,并给我空值,下面是我的POJO: @Data @JsonSnakeCase @JsonIgnoreProperties(ignoreUnknown = true) public class DocumentTemplateRequest { @Enumerated(EnumType.STRING) private TemplateState state; @JsonDeserialize(using = JsonAsStringD

我有一个用例,我希望JSON按原样转换为字符串,但它失败了,并给我空值,下面是我的POJO:

@Data
@JsonSnakeCase
@JsonIgnoreProperties(ignoreUnknown = true)
public class DocumentTemplateRequest {

@Enumerated(EnumType.STRING)
private TemplateState state;


@JsonDeserialize(using = JsonAsStringDeserializer.class)
private String inputSchema;

}
我正在使用的Json作为有效负载:

{
"state": "staging",
"input_schema": {
    "title": "Person",
    "type": "object",
    "properties": {
        "firstName": {
            "type": "string"
        },
        "lastName": {
            "type": "string"
        }
    },
    "required": ["firstName", "lastName"]
}

}
我正在使用对象映射器进行映射:

    ObjectMapper objectMapper = new ObjectMapper();
    DocumentTemplateRequest documentTemplateRequest = null;
    try {
        documentTemplateRequest = objectMapper.readValue(str, DocumentTemplateRequest.class);
    } catch (IOException e) {
        e.printStackTrace();
    }
这是我的反序列化程序:

public class JsonAsStringDeserializer extends JsonDeserializer<String> {
@Override
public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
    TreeNode tree = jsonParser.getCodec().readTree(jsonParser);
    return tree.toString();

}
}
为什么inputSchema是空的,我缺少什么?

它与属性有关? 你错过了Undercroe。输入模式与输入模式不同


无论您在何处使用相同的属性名称,或者使用jsonproperty注释将其分离。

@someguy76,问题是关于Java您应该使用调试器检查
树的值。另外,您如何知道
toString{}
会产生所需的结果?也许你应该把树传递给一个
ObjectMapper
我已经使用了@JsonSnakeCase注释,它为我完成了这个任务。不知道为什么@JsonSnakeCase在这里不起作用,谢谢:)
state : staging
inputSchema: null