2
{
    "CollegeResponse": {
        "departmentDetails": {
            "id": 42,
            "departmentName": "computer science",
            "labDetails": {
                "id": 21,
                "description": "machine learning",
                "assistant": {
                    "empid": 201101,
                    "isPermanent": false
                }
            },
            "affilated": false
        }
    }
}


responseInString = response.getEntity(String.class);
JSONObject json = new JSONObject(responseInString);
String id = json.getJSONObject("CollegeResponse").getJSONObject("departmentDetails").getString("id");

現在、この手順を使用して、json 応答を db で検証しています。しかし、私のjson応答が大きく、dbで各値を解析する必要がある場合、ジェネリックメソッドを作成するにはどうすればよいですか、またはjsonオブジェクトを受け入れる getvalue(jsondata`) のように、反復する必要があるレベルを見つけます値を取得します。私はさまざまな json 応答を持っているので、json 値を取得するのに役立つ一般的な方法を使用すると、仕事が簡単になります。

4

2 に答える 2

0

「検証」ではなく「解析」を意味していると思います-あなたの目的は、Javaコードでデータを使用することです。JAX/B 標準は、Java オブジェクトと同等の JSON 表現との間のマッピング方法を定義します。あなたの例では、CollegeResponse や DepartmentDetails などのクラスがあります。

これらの Java クラスの設定は、手動で行う場合、少し面倒な作業です。各 JSON 属性に対応する各クラスにプロパティを作成し、クラスに注釈を付けて JAX/B に対応を伝える必要があります。

この記事では、その方法について説明します。

この手動の単調な作業を自動化するEclipse ツールがあるようです。

それが完了すると、JSON を Java に変換するコードは次のようになります。

JAXBContext context = JAXBContext.newInstance(CollegeResponse.class);
Unmarshaller um = context.createUnmarshaller();
CollegeResponse college = (CollegeResponse ) um.unmarshal(
          /* some Reader for the JSON string */ );

最終的な効果は、多くの小さな getJSONObject() 呼び出しを記述するのではなく、対応するクラスの設定に投資することです。これにより、適切に構造化されたコードが得られ、実際のビジネス ロジックであるデータの処理がデータから分離されます。私が「配管」と見なすコードの解析。

于 2013-01-30T07:20:28.187 に答える