私は OpenCalais の API を使用しています。この API は、多数の JSON オブジェクトを含む json 文字列を提供します。問題は、API に渡す内容に応じて JSON 文字列の構造が変化することです。つまり、作成できるカスタム クラスに対して非シリアル化をキャストすることはできません。もう 1 つの問題は、出力がキー値形式ではなく、複雑なオブジェクト構造になっていることです。出力の例を次に示します。
{"doc":
{"info":
{"allowDistribution":"true",
"allowSearch":"true",
"calaisRequestID":"c1cdd79a-ed89-8431-138c-50e8a37100f9",
"externalID":"17cabs901",
"id":"http://id.opencalais.com/0RCcU306*HTR05*7HlUb5A",
"docId":"http://d.opencalais.com/dochash-1/6188237f-a2a5-3263-95b7-ea894ba98298",
"document":"Bill Gates worked at Microsoft from 2008 to 2011. He is also married to Melinda Gates.",
"docTitle":"",
"docDate":"2012-07-26 15:51:00.885",
"externalMetadata":"",
"submitter":"ABC"}
したがって、ここには複数のレベルのオブジェクトがあり、キーと値の構造がないことがわかります。このコードから必要なのは、基本的に辞書内のすべての名前/値情報です。次に、関連情報のキーに基づいて並べ替えることができます。どうにかしてオブジェクト値の親も取得できれば素晴らしいと思います。たとえば、必要な出力は、key: allowSearch、value: true、parent: info です。私は逆シリアル化、動的オブジェクト、および .Ancestor のような関数を使用した単純な解析のさまざまな方法をいじろうとしてきましたが、有用なものは何も見つかりませんでした。どんな助けでも大歓迎です。