4

Jackson を使用して、JSON オブジェクトをシリアル化/逆シリアル化しています。

Studyオブジェクトの次の JSON があります。

{
    "studyId": 324,
    "patientId": 12,
    "patient": {
        "name": "John",
        "lastName": "Doe"
    }
}

更新:残念ながら、JSON 構造は変更できません。それは問題の一部です。

オブジェクトを次のクラスにデシリアライズしたいと思います。

public class Study {
    Integer studyId;
    Patient patient;
}

public class Patient {
    Integer patientId;
    String name;
    String lastName;
}

patientIdプロパティをPatientオブジェクトに含めることは可能ですか?

patientオブジェクトをPatientクラスに逆シリアル化することはできます (対応するプロパティnamelastNameプロパティを使用) が、プロパティを含めることはできませんpatientId

何か案は?

4

4 に答える 4

0

この形式の安定性 (および QA 担当者の気分) に応じて、Json を Jackson に渡す前に直接変更できます。これは、壊れているものを修正することになります。正規表現は1つのアイデアです。ハッシュマップで読み取り、そこに値を移動し、別の固定 Json として書き出します。しかし、疑似コードではさらに単純です。

String json = "...";
String lines = json.split( "\r" );
swap( lines[2], lines[3] ); //*1
String fixed = join( lines ); //*2

どこ

*1: tmp = lines[2]; lines[2] = lines[3]; lines[3] = tmp;
*2: http://stackoverflow.com/questions/1515437/java-function-for-arrays-like-phps-join

(このルートを取らなければならない場合は、ハッシュマップアプローチを使用します)

于 2013-10-04T22:12:09.953 に答える
-1

患者オブジェクトの外部に患者 ID が保存されています。それを入れると、すべてが輝いています;)

あなたがそれをjsonに正確に入れることを主張するなら、私はあなたが困っているのではないかと心配しています. (Json デザイナーに、Java にあるので、Patient オブジェクトにあるそれが属する場所に保存するよう説得するのが最善です。)

何も役に立たない場合は、データ転送オブジェクト ( https://en.wikipedia.org/wiki/Data_transfer_object ) またはカスタム デシリアライザー ( JSON カスタム デシリアライザーの設定) を使用して、正常な表現と非常識な表現の間で変換する必要があります。

于 2013-10-04T21:46:14.137 に答える