これは、Jackson JsonParserのバグですか、それとも何か問題がありますか?

ダン・ラグ:

Jacksonの奇妙な振る舞いのように見えるものを観察していますJsonParser。具体的にJsonPointerは、配列内で正しいものキャプチャしています

次のJSONスニペットがあるとします。

[
    {
        "name": "a",
        "children": [
            {
                "name": "b"
            },
            {
                "name": "c"
            },
            {
                "name": "d"
            }
        ]
    },
    {
        "name": "e",
        "children": [
            {
                "name": "f"
            },
            {
                "name": "g",
                "children": [
                    {
                        "name": "h"
                    },
                    {
                        "name": "i"
                    }
                ]
            }
        ]
    },
    {
        "name": "j"
    }
]

nextToken()次のように反復を試みる単純なKotlin関数があります。

fun main()
{
    val jsonParser = jacksonObjectMapper().readTree(JSON).traverse()

    while (jsonParser.nextToken() != null)
    {
        val jsonPointer = jsonParser.parsingContext?.pathAsPointer(true) ?: continue
        val tokenName = jsonParser.currentToken.name
        println("${jsonPointer.toString().padEnd(40)} $tokenName")
    }
}

今、ここにある奇妙な何; これjsonPointerは、出力に示されているように配列インデックスを区別していません。

                                         START_ARRAY
                                         START_OBJECT
/0/name                                  FIELD_NAME
/0/name                                  VALUE_STRING
/0/children                              FIELD_NAME
/0/children                              START_ARRAY
/0/children                              START_OBJECT
/0/children/0/name                       FIELD_NAME
/0/children/0/name                       VALUE_STRING
/0/children                              END_OBJECT
/0/children                              START_OBJECT
/0/children/0/name                       FIELD_NAME
/0/children/0/name                       VALUE_STRING
/0/children                              END_OBJECT
/0/children                              START_OBJECT
/0/children/0/name                       FIELD_NAME
/0/children/0/name                       VALUE_STRING
/0/children                              END_OBJECT
/0/children                              END_ARRAY
                                         END_OBJECT
                                         START_OBJECT
/0/name                                  FIELD_NAME
/0/name                                  VALUE_STRING
/0/children                              FIELD_NAME
/0/children                              START_ARRAY
/0/children                              START_OBJECT
/0/children/0/name                       FIELD_NAME
/0/children/0/name                       VALUE_STRING
/0/children                              END_OBJECT
/0/children                              START_OBJECT
/0/children/0/name                       FIELD_NAME
/0/children/0/name                       VALUE_STRING
/0/children/0/children                   FIELD_NAME
/0/children/0/children                   START_ARRAY
/0/children/0/children                   START_OBJECT
/0/children/0/children/0/name            FIELD_NAME
/0/children/0/children/0/name            VALUE_STRING
/0/children/0/children                   END_OBJECT
/0/children/0/children                   START_OBJECT
/0/children/0/children/0/name            FIELD_NAME
/0/children/0/children/0/name            VALUE_STRING
/0/children/0/children                   END_OBJECT
/0/children/0/children                   END_ARRAY
/0/children                              END_OBJECT
/0/children                              END_ARRAY
                                         END_OBJECT
                                         START_OBJECT
/0/name                                  FIELD_NAME
/0/name                                  VALUE_STRING
                                         END_OBJECT

パスは0、最初の要素でもn番目の要素でも常にのインデックスを返します。

これはバグですか?それともなんとか導入できたのでしょうか?

StaxMan:

この問題が発生している可能性があります。

https://github.com/FasterXML/jackson-databind/issues/2525

これは、のコンテンツを「読み取る」場合に特に影響しJsonNodeます。2.11のパッチはまだ適用されていませんが、処理は2.11で修正されています(2019年末または2020年初頭にリリースされる予定です)。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

それはMSVC2010のバグですか、それとも何か問題がありますか?

分類Dev

これは本当にJAVASCRIPTのバグですか、それとも日付、データ型に問題がありますか?

分類Dev

最新のPHPのAESGCMが壊れていますか、それとも何か問題がありますか?

分類Dev

並べ替え:このパフォーマンスの違いは実際のものですか、それとも何か問題がありますか?

分類Dev

何かが足りないのですか、それとも「qmlRegisterSingletonInstance」にバグがありますか?

分類Dev

このC ++でのEigen :: Tensorの宣言は安全ですか、それともバグがありますか?そして、私はそれのために問題を提出する必要がありますか?

分類Dev

MATLAB OOPは遅いですか、それとも何か問題がありますか?

分類Dev

git pushは遅いですか、それとも何か問題がありますか?

分類Dev

これはKotlinのバグですか、それとも何かが足りませんか?

分類Dev

Webpack DevServerが遅すぎますか、それとも何か問題がありますか?

分類Dev

画像のURIは変化し続けますが、これはエミュレータの問題ですか、それとも何か問題がありますか?

分類Dev

SQL Server:これはバグですか、それとも誤解がありますか?

分類Dev

テープに欠陥がありますか、それとも別の問題がありますか?

分類Dev

行の中に行がある必要がありますか、それとも問題が発生しますか?

分類Dev

これはPython / Numpyのバグですか、それとも微妙な問題ですか?

分類Dev

JDBC + PL / SQL =とても簡単ですか、それとも問題がありますか?

分類Dev

これらのファイルは安全ですか、それとも将来問題になる可能性がありますか?

分類Dev

ノードv13でfs.watch()が壊れていますか、それとも何か問題がありますか?

分類Dev

「揮発性」の定義はこの揮発性ですか、それともGCCに標準準拠の問題がありますか?

分類Dev

Spacy NERをトレーニングするための文章を提供する必要がありますか、それとも段落は問題ありませんか?

分類Dev

libcurlの例httpcustomheader.cはバグがありますか(悪い習慣を示しています)、それとも何かが足りませんか?

分類Dev

タスクが開始されることもあれば、開始されないこともありますが、その理由は何ですか?

分類Dev

このコードに何か問題がありますか?それとも私のコンピューター?

分類Dev

UserControlの子のサイズ変更に問題がありますか、それともUserControlを使用するよりも優れた方法ですか?

分類Dev

matplotlib axvlineの真実があいまいですか、それともリストの問題ですか?

分類Dev

「30/360 = 0」これはバグですか、それとも何ですか?

分類Dev

グローバル定数。それらの使用に問題はありますか?

分類Dev

私の同じカウントクエリは、25回実行されるように開発ログに表示されています。それは問題ありませんか、それともコードに問題がありますか?

分類Dev

より良い解決策はありますか、それともデータをDBに解析する方法でこれで問題ありませんか?

Related 関連記事

  1. 1

    それはMSVC2010のバグですか、それとも何か問題がありますか?

  2. 2

    これは本当にJAVASCRIPTのバグですか、それとも日付、データ型に問題がありますか?

  3. 3

    最新のPHPのAESGCMが壊れていますか、それとも何か問題がありますか?

  4. 4

    並べ替え:このパフォーマンスの違いは実際のものですか、それとも何か問題がありますか?

  5. 5

    何かが足りないのですか、それとも「qmlRegisterSingletonInstance」にバグがありますか?

  6. 6

    このC ++でのEigen :: Tensorの宣言は安全ですか、それともバグがありますか?そして、私はそれのために問題を提出する必要がありますか?

  7. 7

    MATLAB OOPは遅いですか、それとも何か問題がありますか?

  8. 8

    git pushは遅いですか、それとも何か問題がありますか?

  9. 9

    これはKotlinのバグですか、それとも何かが足りませんか?

  10. 10

    Webpack DevServerが遅すぎますか、それとも何か問題がありますか?

  11. 11

    画像のURIは変化し続けますが、これはエミュレータの問題ですか、それとも何か問題がありますか?

  12. 12

    SQL Server:これはバグですか、それとも誤解がありますか?

  13. 13

    テープに欠陥がありますか、それとも別の問題がありますか?

  14. 14

    行の中に行がある必要がありますか、それとも問題が発生しますか?

  15. 15

    これはPython / Numpyのバグですか、それとも微妙な問題ですか?

  16. 16

    JDBC + PL / SQL =とても簡単ですか、それとも問題がありますか?

  17. 17

    これらのファイルは安全ですか、それとも将来問題になる可能性がありますか?

  18. 18

    ノードv13でfs.watch()が壊れていますか、それとも何か問題がありますか?

  19. 19

    「揮発性」の定義はこの揮発性ですか、それともGCCに標準準拠の問題がありますか?

  20. 20

    Spacy NERをトレーニングするための文章を提供する必要がありますか、それとも段落は問題ありませんか?

  21. 21

    libcurlの例httpcustomheader.cはバグがありますか(悪い習慣を示しています)、それとも何かが足りませんか?

  22. 22

    タスクが開始されることもあれば、開始されないこともありますが、その理由は何ですか?

  23. 23

    このコードに何か問題がありますか?それとも私のコンピューター?

  24. 24

    UserControlの子のサイズ変更に問題がありますか、それともUserControlを使用するよりも優れた方法ですか?

  25. 25

    matplotlib axvlineの真実があいまいですか、それともリストの問題ですか?

  26. 26

    「30/360 = 0」これはバグですか、それとも何ですか?

  27. 27

    グローバル定数。それらの使用に問題はありますか?

  28. 28

    私の同じカウントクエリは、25回実行されるように開発ログに表示されています。それは問題ありませんか、それともコードに問題がありますか?

  29. 29

    より良い解決策はありますか、それともデータをDBに解析する方法でこれで問題ありませんか?

ホットタグ

アーカイブ