私はインバウンドJsonオブジェクトを取得し、それを のキー値レコードに変換するツールを書いています(たぶんflatteningと呼ばれることもあります)。その目的は、Jsonオブジェクトが非常に大きいか、または非常にネストされている場合にツールが壊れないようにすることです。再帰を避けたいのです。C#Jsonすべての動的オブジェクトをキー値のペアに変換してください
例オブジェクトは、上記の目的のための所望の出力は次のようになり、ネストされた配列、空の値、あなたはそれに名前を付ける、文字通りあらゆる法的JSON ...
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
},
{
"type": "mobile",
"number": "123 456-7890"
}
],
"children": [],
"spouse": null
}
を含む、(下)このようなことかもしれませんオブジェクトのすべての要素のためのキーと値のペア...
Key Value
/firstName "John"
/lastName "Smith"
/isAlive "true"
/age "25"
/address
/address/streetAddress "21 2nd Street"
/address/city "New York"
/address/state "NY"
/address/postalCode "10021-3100"
/phoneNumbers
/phoneNumbers/1/
/phoneNumbers/1/type "home"
/phoneNumbers/1/number "212 555-1234"
/phoneNumbers/2/
/phoneNumbers/2/type "office"
/phoneNumbers/2/number "646 555-4567"
/phoneNumbers/3/
/phoneNumbers/3/type "mobile"
/phoneNumbers/3/number "123 456-7890"
/children
/spouse
Iは動的オブジェクトとしてメモリに上記の例のオブジェクトを有する、NewtonsoftのJSONクラスを使用してインポート。反復を繰り返すだけで、理想的な解は再帰を伴わないでしょう。吹き飛ばされたスタックは悪くなるからです。今後のお手伝いをありがとう。
はNugetパッケージnewtonsoft json helpですか?あなたのツールをあなたのためにすでに書いています。https://www.newtonsoft.com/json –
JSONの再帰呼び出しでスタックを吹き飛ばすと、JSONがあなたの吹き飛ばしたスタックよりも悪いと言えます。とにかく、私はあなたの質問にコードが見当たらず、あなたが何をしたのかの表示もなく、あなたにコードの一部を書くように頼んでいるような気がする。 – oerkelens
@ Aaron.S - それを使って。文字列は動的オブジェクトに変換されていますが、オブジェクト構造は不明です。したがって、動的jsonオブジェクトのすべてのノードをどのように訪問するのですか?投稿に感謝します。 –