ジャクソン-List <Map <String、String >>のJavaオブジェクトからJson文字列への変換

ピョートルスペル:

JavaオブジェクトからJSON文字列を生成したい

public class Resource {

String name;
List<Item> items;

public String resourceAsJson(Resource resource) throws JsonProcessingException {
    ObjectMapper objectMapper = new ObjectMapper();
    return objectMapper.writeValueAsString(resource);
}

場所アイテム

public class Item {
    Map<String, String> systemFields;
    Map<String, String> dataFields;
}

この時点でのJSON文字列の形式は次のとおりです。

{
"name": "Person",
"items": [
    {
        "systemFields": {
            "systemField1": "xxx",
            "systemField2": "xxx",
            "systemField3": "x"
        },
        "dataFields": {
            "dataField1": "xxx",
            "dataField2": "xxx",
            "dataField3": "x"
        }
    }
    ]
}

私が取得しようとしているのは、JSONの異なる形式です(アイテムを省略し、1つのJsonテーブルに「システムフィールド」「データフィールド」があります)

{
"Person":[
        {
        "systemField1": "xxx",
        "systemField2": "xxx",
        "systemField3": "Warsaw",
        "dataField1": "xxx",
        "dataField2": "xxx",
        "dataField3": "xxx"
        }
    ]
}

モデルを変更せずにジャクソンでこれを行う方法はありますか?

ミシャウジオバー:

このような場合、のデフォルトの表現がPOJOカスタムシリアライザーの実装に必要なものはありません。あなたの場合、それらは以下のようになります:

class ResourceJsonSerializer extends JsonSerializer<Resource> {
    @Override
    public void serialize(Resource value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeStartObject();
        gen.writeFieldName(value.getName());
        gen.writeObject(value.getItems());
        gen.writeEndObject();
    }
}

class ItemJsonSerializer extends JsonSerializer<Item> {

    @Override
    public void serialize(Item value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeStartObject();
        writeMap(value.getSystemFields(), gen);
        writeMap(value.getDataFields(), gen);
        gen.writeEndObject();
    }

    private void writeMap(Map<String, String> map, JsonGenerator gen) throws IOException {
        if (map != null) {
            for (Map.Entry<String, String> entry : map.entrySet()) {
                gen.writeStringField(entry.getKey(), entry.getValue());
            }
        }
    }
}

com.fasterxml.jackson.databind.annotation.JsonSerializeアノテーションを使用してそれらを登録できます

@JsonSerialize(using = ResourceJsonSerializer.class)
class Resource {

そして:

@JsonSerialize(using = ItemJsonSerializer.class)
class Item {

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ジャクソンでjson文字列をList <List <String>に変換する

分類Dev

ジャクソン-Map <String、Object>への再帰的な解析

分類Dev

Map <String、List <String >>からPair <String、String>へ

分類Dev

Java List <String>からMap <String、Integer>への変換

分類Dev

Java List <String>からMap <String、Integer>への変換

分類Dev

Java-オブジェクトからMap.Entry <String、String>へのチェックされていないキャスト

分類Dev

List <Map <?、?>>をList <Map <String、String >>にキャストする方法は?

分類Dev

List <Map <?、?>>をList <Map <String、String >>にキャストする方法は?

分類Dev

Gson Map <String、Any>からオブジェクトへ

分類Dev

(String、List [(String、String)])をJSONオブジェクトに変換します

分類Dev

「Map <String、List <dynamic >>」を「Map <String、List <String >>」にキャストします

分類Dev

Map <String、List <String> Java 8ストリームのマージ

分類Dev

List <String>からのFlutter動的作成RichTextオブジェクト

分類Dev

Java Convert List <String>からMap <String、String>

分類Dev

List <Object>からMap <String、List <Object >>を取得します。キーはオブジェクトのフィールドの1つです

分類Dev

ジャクソン:List <String>への部分的な逆シリアル化

分類Dev

List <Map <String、Object >>をList <Map <String、String >>に変換する方法

分類Dev

ArrayList <HashMap <String、String >>からJSONオブジェクトJavaへ

分類Dev

Java 8でのフィルタリング:オブジェクトの属性に基づくMap <String、Set <Object >>からのMap <String、Set <Object >>

分類Dev

オブジェクトリストを<String、List <String >>のマップに変換する方法は?

分類Dev

文字列からjsonオブジェクトへの変換android

分類Dev

ジャクソンを使用したフォーマットリスト<Map <String、String >>

分類Dev

List <Map <String、String >>の選択肢(Java)

分類Dev

オブジェクトのリストを<String、Map <String、Integer >> java8ストリームのマップに変換します

分類Dev

Java Small Map <String、List>とLarge Map <Object、String>のパフォーマンス

分類Dev

list(map(list(map(string))))をterraformを使用してmap(list(map(string)))に変換する

分類Dev

ジャクソンを使用してMap <String、String>に逆シリアル化する

分類Dev

KotlinでMap <String、List <String >>をList <Map <String、String >>に変換します

分類Dev

JavaScriptオブジェクトをMap [String、String]に変換するにはどうすればよいですか?

Related 関連記事

  1. 1

    ジャクソンでjson文字列をList <List <String>に変換する

  2. 2

    ジャクソン-Map <String、Object>への再帰的な解析

  3. 3

    Map <String、List <String >>からPair <String、String>へ

  4. 4

    Java List <String>からMap <String、Integer>への変換

  5. 5

    Java List <String>からMap <String、Integer>への変換

  6. 6

    Java-オブジェクトからMap.Entry <String、String>へのチェックされていないキャスト

  7. 7

    List <Map <?、?>>をList <Map <String、String >>にキャストする方法は?

  8. 8

    List <Map <?、?>>をList <Map <String、String >>にキャストする方法は?

  9. 9

    Gson Map <String、Any>からオブジェクトへ

  10. 10

    (String、List [(String、String)])をJSONオブジェクトに変換します

  11. 11

    「Map <String、List <dynamic >>」を「Map <String、List <String >>」にキャストします

  12. 12

    Map <String、List <String> Java 8ストリームのマージ

  13. 13

    List <String>からのFlutter動的作成RichTextオブジェクト

  14. 14

    Java Convert List <String>からMap <String、String>

  15. 15

    List <Object>からMap <String、List <Object >>を取得します。キーはオブジェクトのフィールドの1つです

  16. 16

    ジャクソン:List <String>への部分的な逆シリアル化

  17. 17

    List <Map <String、Object >>をList <Map <String、String >>に変換する方法

  18. 18

    ArrayList <HashMap <String、String >>からJSONオブジェクトJavaへ

  19. 19

    Java 8でのフィルタリング:オブジェクトの属性に基づくMap <String、Set <Object >>からのMap <String、Set <Object >>

  20. 20

    オブジェクトリストを<String、List <String >>のマップに変換する方法は?

  21. 21

    文字列からjsonオブジェクトへの変換android

  22. 22

    ジャクソンを使用したフォーマットリスト<Map <String、String >>

  23. 23

    List <Map <String、String >>の選択肢(Java)

  24. 24

    オブジェクトのリストを<String、Map <String、Integer >> java8ストリームのマップに変換します

  25. 25

    Java Small Map <String、List>とLarge Map <Object、String>のパフォーマンス

  26. 26

    list(map(list(map(string))))をterraformを使用してmap(list(map(string)))に変換する

  27. 27

    ジャクソンを使用してMap <String、String>に逆シリアル化する

  28. 28

    KotlinでMap <String、List <String >>をList <Map <String、String >>に変換します

  29. 29

    JavaScriptオブジェクトをMap [String、String]に変換するにはどうすればよいですか?

ホットタグ

アーカイブ