4

下位互換性の理由から、API からの JSON 応答を変換するライブラリを作成しています。そして、私がする必要があるのは、任意の JSON を取り込んで、特定のフィールド名を変更することです。私はscalaとargonautを使用していますが、フィールド名を変更するドキュメントや例には何も表示されず、値のみが表示されます。

4

2 に答える 2

1

これを行う特に良い方法はわかりませんが、オブジェクトのフィールドを置き換えてカーソルで使用するヘルパーを作成するのはそれほどひどいことではありませんwithObject

def renameField(before: JsonField, after: JsonField)(obj: JsonObject) =
  obj(before).map(v => (obj - before) + (after, v)).getOrElse(obj)

Parse.parseOption("""{ "a": { "b": { "c": 1 } } }""").flatMap { json =>
  (json.hcursor --\ "a").withFocus(_.withObject(renameField("b", "z"))).undo
}

これはSome({"a":{"z":{"c":1}}})期待どおりに返されます。

于 2014-01-21T19:10:47.583 に答える