私はnoSQLデータベースを持っています。 JSONデータをC#クラスモデルとマッピングしようとすると、データの一部がマップされますが、一部のモデルではマッピングされません。JSONデータとC#クラスモデルとのマッピング
以下はJSON形式のサンプルです。私は唯一のuser_info
モデルが何らかの理由で読み込まれます、C#クラスでJSONをマップしようとすると、
{
"J1D0GhKmzAT4gRn5VkfPKKVCfku2": {
"reports": {
"-KYbi7tbJoZJmCs8hcHy": {
"age": "0",
"description": "Test",
"incident": "Test",
"location": "Test"
},
"-KYbmoWJwzSSS0llsSZN": {
"age": "0",
"description": "Test",
"incident": "Test",
"location": "Test"
},
"-KYbszjzkYnH2N9xbFMJ": {
"age": "0",
"description": "Test",
"incident": "Test",
"location": "Test"
}
},
"user_info": {
"dob": "Feb 11, 2016",
"name": "Test",
"phone": "44444",
"sex": "Male",
"work": "llllll"
}
},
"JxmpIWWioFbg1Po4gXtV07pwDvX2": {
"reports": {
"-KYiiDRl7fYAPdav13h3": {
"age": "0",
"description": "Test",
"incident": "Test",
"location": "Test"
},
"-KYinWZeP7N24x8QUC6O": {
"age": "0",
"description": "Test",
"incident": "Test",
"location": "Test"
}
},
"user_info": {
"dob": "Feb 11, 2016",
"name": "Test",
"phone": "44444",
"sex": "Male",
"work": "llllll"
}
}
}
と私のC#クラスモデルは、ここでは以下のように
public class User
{
public user_info user_info { get; set; }
public reports reports { get; set; }
}
public class user_info
{
public string dob { get; set; }
public string name { get; set; }
public string phone { get; set; }
public string sex { get; set; }
public string work { get; set; }
}
public class reports
{
public List<reportInfo> reportInfo { get; set; }
}
public class reportInfo
{
public string age { get; set; }
public string description { get; set; }
public string incident { get; set; }
public string location { get; set; }
}
です。 JSONには一致するプロパティがあります。しかし、モデルにマップされていない動的プロパティがいくつかあるため、レポートモデルにはデータが取り込まれません。
私が間違っている可能性のある解決策を教えてください。
ありがとうございます。
あなたはJSONをデシリアライズするために使うのですか? JsonDataContractまたはJSON.net? –
あなたはあなたが使用しているシリアライザについては言及していませんが、ほとんどのJSONシリアライザはカスタムキーを使用してJSONオブジェクトをデシリアライズして 'Dictionary'としてサポートしています。それはあなたが必要とするものを行うはずです。 [名前がIDのjsonオブジェクトから厳密に型付けされたc#オブジェクトを作成する](https://stackoverflow.com/questions/34213566)を参照してください。 –
dbc
Firebaseデータベースからデータを取得するために、Firesharpライブラリ(.net用)を使用しています。それはそれ自身のデシリアライザです。以下は構文です ' var response = FirebaseClient.Get(" users "); var result = response.ResultAs>(); –