web-dev-qa-db-ja.com

動的に変化するJsonファイルを解析する方法は? (c#)

したがって、Jsonデータの解析については少し知っていますが、必要なすべてを記述していなければ、それほど多くは許されません。例としてこのJsonファイルを使用してみましょう:

{  
  "firstname": "John",  
  "lastname": "Smith",  
  "age": 25,  
  "address": {  
    "street address": "21 2nd Street",  
    "city": "New York",  
    "state": "NY",  
    "postal code": "10021"  
  },  
  "phonenumbers": [  
    {  
      "type": "home",  
      "number": "212 555-1234"  
    },  
    {  
      "type": "fax",  
      "number": "646 555-4567"  
    }  
  ],  
  "sex": {  
    "type": "male"  
  }  
}  

このjsonデータを解析したい場合は、まずこれらの名前のクラスをスクリプトで作成する必要があることを知っています(私が知っているようにそれらをすべて書き出したわけではありません)。

public class JsonClass
{
    string firstname;
    List<phonenumberlist> phonenumbers;
}

public class phonenumberlist
{
    string type;
    string number;
}

しかし、私の質問は、jsonファイルを動的に変更したい場合、および動的に変化するjsonファイルに従って新しいクラスを動的に設定するにはどうすればよいですか?たとえば、電話番号リストの下のJsonファイルに追加するとします。

"areaCodeLocation": "new york"

その後、手動でコードにアクセスして、記述したクラスを更新する必要があるため、解析できません。または、他に何か追加したい場合はどうなりますか?お気に入り
"height" : "6"

基本的に私が求めているのは、動的に変化するjsonに従って変更するパーサーを動的に構築する方法です。ありがとう!

編集:私が達成しようとしていることをさらに明確にするため。インターネットでjsonファイルをホストし、プログラムの起動時にそれを解析します。コード内のクラスを介してすべてが正しく初期化されているため、これは通常問題ではありません。しかし、上記のように「areaCodeLocation」や「height」などの情報をjsonファイルに追加することにした場合は、クラスで初期化されていないため、解析されません。

可能であれば、クラスの設定を含むコードを介してjsonファイルを解析し、プログラムがjsonファイル(オンラインでホスト)に追加する必要のある追加情報を解析せずに済むようにします。私自身がコードにアクセスして、解析用の新しいクラスを手動で追加します。これは、コード内で行われるため、ユーザーがjsonファイルに新しいものを追加するたびにプログラムを更新する必要がないためです。

2
EmperiumIce

質問を誤解した場合はご容赦ください。しかし、Newtonsoft.Jsonライブラリには、動的JSONピースを実際に表すJObjectクラスがあります。 スニペットコード は、クエリを実行して、ビジネスロジックに必要なプロパティのみを取得する方法を示しています。

1
Bohdan Stupak