2016-03-03 56 views
1

我調用REST API返回在下列格式的數據處理JSON:不確定如何定義一個C#類具有可變屬性名

{ 
    "facets": [ 
     { 
      "M": 100 
     }, 
     { 
      "F": 210 
     } 
    ] 
} 

我不知道如何定義一個C#類映射到這個JSON,因爲M/F屬性名稱可以是任何東西。這是目前性別的一個方面,但對於其他語言來說,它可能是「英語」,「西班牙語」,「日語」等。理想情況下,我希望像字典這樣的東西。

+0

那麼你期望C#代碼是什麼?目前還不清楚這個片段有什麼問題。 –

+0

@PatrickHofman這就是問題所在?因爲M/F部分可能是任何東西,所以我不知道如何編寫映射到此的C#類。這是目前性別的一個方面,但對於其他語言來說,它可能是「英語」,「西班牙語」,「日語」等。理想情況下,我希望像字典這樣的東西。 – Dismissile

回答

3

,其中鍵可以變化,使用字典表示對象:(。如果字典值並不總是int,使用object代替)

public class Criteria 
{ 
    public List<Dictionary<string, int>> facets { get; set; } 
} 

小提琴:https://dotnetfiddle.net/IwyXby

+0

謝謝。我試圖將其直接序列化爲字典而不是字典列表。 – Dismissile

+0

沒問題;很高興我能幫上忙。 –

0

這是我如何使用json.net來序列化和反序列化:

public static bool SerializeStudentsFile(string fileStorageLoc) 
{ 
    var jsonStudents = JsonConvert.SerializeObject(StudentsList); 
    System.IO.File.WriteAllText(fileStorageLoc, jsonStudents); 
    return true; 
} 

public static List<Student> DeserializeStudentsFile() 
{ 
    List<Student> studentList; 
    if (!System.IO.File.Exists(STUDENTS_FILENAME)) 
    { 
     var studentFile = System.IO.File.Create(STUDENTS_FILENAME); 
     studentFile.Close(); 
    } 

    var studentContentsFile = System.IO.File.ReadAllText(STUDENTS_FILENAME); 
    var studentContentsFileDeserialized = JsonConvert.DeserializeObject<List<Student>>(studentContentsFile); 

    if (null != studentContentsFileDeserialized) return studentContentsFileDeserialized; 

    studentList = new List<Student>(); 
    return studentList; 
} 
+0

我不確定這是否真的回答了這個問題--OP正在尋找如何定義一個類來捕獲問題中的JSON數據,而不是將JSON讀取和寫入磁盤上的文件的代碼。 –

相關問題