0

ジャワclass JSONObject

JSON オブジェクトがあり、そこからキーと値のペアの一部のみを別の JSON オブジェクトに抽出したいと考えています。さらに、抽出したキーの名前を変更したいと考えています。最後に、出力オブジェクトを「フラット」(つまり、深さ 1 のすべての要素) にしたいと考えています。

例えば:

入力オブジェクト:

{
    "a":"val_a",
    "b":
    {
        "b1":"val_b1",
        "b2":"val_b2"
    },
    "c":
    {
        "c1":"val_c1",
        "c2":
        {
            "c21":"val_c21",
            "c22":"val_c22"
        }
    }
}

出力オブジェクト:

{
    "x":"val_a",
    "y":"val_b1",
    "z":"val_c22"
}

これを実装するための最良の(「最もクリーンな」)方法は何ですか?

現在、フィールドを 1 つずつ「手動で」抽出しています (上記の例の場合)。

JSONObject output = new JSONObject();
output.put("x",input.getString("a"));
output.put("y",input.getJSONObject("b").getString("b1"));
output.put("z",input.getJSONObject("c").getJSONObject("c2").getString("c22"));

「ワンショット」でこれを達成するのに役立つある種の「正規表現」はありますか?

与えられた例に対する答えは高く評価されます。

ありがとう

4

3 に答える 3

1

探しているものを達成するのに役立つフレームワークがいくつかあります。問題は、このような単純な作業には複雑すぎることです。

Apache CamelYQLQL.IOTeiidStardustを見たことがあるかもしれません。それらはすべて、さまざまなレベルでのデータ仮想化/統合のためのフレームワークであり、仕事をすることができます. 問題は、そのようなインフラストラクチャが本当に必要かどうか、そして実際にいくつのデータ変換を行っているかということです。

この変換しかない場合は、GSONまたはApache Camelを使用することをお勧めします。

于 2014-01-29T09:11:55.217 に答える
1

もう 1 つの方法は、JSON in Javaフレームワークを使用して JSON オブジェクトを Java に変換し、操作を実行して新しい JSON オブジェクトを生成することです。

編集:誤解して申し訳ありません。

@Alessioが推奨するものなどのフレームワークを実際に使用する必要があります。これは正規表現を使用して実行できるはずですが、ネストや探しているオブジェクトの変更によって正規表現自体に大きな変化が生じる可能性があるため、個人的にはお勧めしません。したがって、正規表現は仕事をより迅速に行うことができますが、読みやすく保守しにくい可能性があります。

于 2014-01-29T08:39:44.507 に答える