简体   繁体   中英

Unsure how to define a C# class to handle JSON with variable property names

I am calling a REST api that returns their data in the following format:

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

I am not sure how to define a C# class that maps to this JSON since the M/F property name could be anything. This is currently a facet for gender, but for something else like language it might be "English", "Spanish", "Japanese", etc. Ideally I would like something like a dictionary.

Where the keys can vary, use a dictionary to represent the object:

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

(If the dictionary value isn't always an int , use object instead.)

Fiddle: https://dotnetfiddle.net/IwyXby

This is how I use json.net to both serialize and deserialize:

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;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM