0

Vert.x コア バンドルで Jackson API を使用して、JSON 文字列を Java オブジェクトにデコードしています。通常、これはほとんどすべてのケースで機能しますが、1 つの特定のユース ケースで機能します。ユーザーが入力したフォーム データから JSON 文字列を作成し、以下の行を使用してそれを Java オブジェクトにマップしています。

MyClass myClass = io.vertx.core.json.Json.mapper.readValue(jsonString, MyClass.class)

MyClass.java

public class MyClass{
    private String ID;
    private String description;

    //getter and setter methods
}

入力文字列

{
    "description": "“success”,\n “data”: [\n   {\n     “severity”: “2\",\n     “createdby”: “Online user\",\n     “product”: “Google map”,\n     “description”: “test”,",
    "ID": "74085652"
}

フィールドの値description が別の JSON 文字列の場合、マッピングは例外で失敗します。

com.fasterxml.jackson.databind.JsonMappingException: Unexpected character ('“' (code 8220 / 0x201c)): was expecting either valid name character (for unquoted name) or double-quote (for quoted) to start field name

これらの構成を追加しようとしましcom.fasterxml.jackson.core.JsonParser.Featureたが、うまくいきませんでした。

    Json.mapper.configure(ALLOW_UNQUOTED_CONTROL_CHARS, true);
    Json.mapper.configure(ALLOW_UNQUOTED_FIELD_NAMES, true);
    Json.mapper.configure(ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, true);

Vert.x 3.4.1Java 8を使用しています

ここで何か不足していますか?どんな助けでも大歓迎です!

4

0 に答える 0