私はJSON.netに精通しており、基本構造(1人の子供まで)でJSONを逆シリアル化できます。私は現在、Netatmo APIから返されたJSONを逆シリアル化しています。 JSONの構造は私のために複雑です。以下は、JSONの基本構造です。子どもと内子のJSONを逆シリアル化する
動的値1と動的値2は、idごとに変更される値を表します。完全なJSONは
{
"body": [{
"_id": "70:ee:50:02:b4:8c",
"place": {
"location": [-35.174779762001, -5.8918476117544],
"altitude": 52,
"timezone": "America\/Fortaleza"
},
"mark": 0,
"measures": {
"02:00:00:02:ba:2c": {
"res": {
"1464014579": [16.7, 77]
},
"type": ["temperature", "humidity"]
},
"70:ee:50:02:b4:8c": {
"res": {
"1464014622": [1018.1]
},
"type": ["pressure"]
}
},
"modules": ["02:00:00:02:ba:2c"]
}, {
"_id": "70:ee:50:12:40:cc",
"place": {
"location": [-16.074257294385, 11.135715243973],
"altitude": 14,
"timezone": "Africa\/Bissau"
},
"mark": 14,
"measures": {
"02:00:00:06:7b:c8": {
"res": {
"1464015073": [26.6, 78]
},
"type": ["temperature", "humidity"]
},
"70:ee:50:12:40:cc": {
"res": {
"1464015117": [997]
},
"type": ["pressure"]
}
},
"modules": ["02:00:00:06:7b:c8"]
}],
"status": "ok",
"time_exec": 0.010364055633545,
"time_server": 1464015560
}
私はこのJSONの複雑な構造を見ることで混乱しています、以下のとおりです。 JSONの単一レベルのために、私は過去にこのコード、
IList<lstJsonAttributes> lstSearchResults = new List<lstJsonAttributes>();
foreach (JToken objResult in objResults) {
lstJsonAttributes objSearchResult = JsonConvert.DeserializeObject<lstJsonAttributes>(objResult.ToString());
lstSearchResults.Add(objSearchResult);
}
を使用していた。しかしこれほど多くの子供のために私は、オブジェクトクラスを作成する方法を理解するためには至っていません。どんな指導も高く評価されます。
更新: これはこれまで私が達成したことです。私は以下のようにメインクラスを作成した
、
public class PublicDataClass
{
public string _id { get; set; }
public PublicData_Place place { get; set; }
public string mark { get; set; }
public List<string> modules { get; set; }
}
と「場所」のクラスは、
public class PublicData_Place
{
public List<string> location { get; set; }
public string altitude { get; set; }
public string timezone { get; set; }
}
は、その後、私は次のコード行でオブジェクトをデシリアライズしている、次の通りであります
var obj = JsonConvert.DeserializeObject<List<PublicDataClass>>(jsonString);
もう少し複雑な「測定値」を除くすべてのデータを正常に取得できるようになりました。
バンドルを行います。私はこの時点でゆっくりと自分に到達していました。私はhttp://json2csharp.com/を使ってJSONをC#オブジェクトに変換しました。それは測定のためのオブジェクトを正常に作成しませんでしたが、SOの別の投稿を参照し、JSON全体を動的オブジェクトに変換しました。それはすべてを作成し、すべてのデータを設定しました。 QuickWatchウィンドウのオブジェクトを調べて、Measuresのネストされた子オブジェクトがDictionaryとして作成されていることを確認しました。カスタムタイプは、ネストされた動的オブジェクトで作業するほうがはるかに簡単です。 –
私はそれをテストしたところ、問題なく動作しました。もう一度ありがとう。 –