【发布时间】:2020-01-29 08:14:46
【问题描述】:
我正在从允许自定义字段的 API 中提取数据,这会导致不同 API 调用的 JSON 响应结构发生变化。我正在使用 RestSharp/SimpleJSON 将 JSON 反序列化为我的项目中定义的对象。我的用户能够配置他们的帐户以提取他们自己的自定义字段,但我的问题是我无法在不将该属性添加到类、重新编译和部署更改的情况下将新的自定义字段反序列化到我的对象中。有谁知道我如何访问这个新的自定义字段而无需将属性添加到类并重新部署?下面的例子...
定义
public class UserFields
{
public string Username {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}
public string GradeCustomFieldName {get;set;}
public string CustomfieldABC {get;set;} //user ABC's custom field for "grade"
public string CustomfieldXYZ {get;set;} //user XYZ's custom field for "grade"
public string CustomfieldLMNO {get;set;} //user LMNO's custom field for "grade"
public string CustomfieldASDF {get;set;} //user ASDF's custom field for "grade"
public string UserGrade
{
string grade = this.GetType().GetProperty(this.gradeCustomFieldName).GetValue(this);
}
...
}
用法
UserFields userFields = SimpleJson.DeserializeObject<UserFields>(jsonResponse);
string userGrade = userFields.UserGrade;
客户端 ABC 的 json 响应
{
"Username": "bobslydale",
"FirstName": "bob",
"LastName": "slydale",
"GradeCustomFieldName": "CustomfieldABC",
"CustomfieldABC": "A"
}
客户端 XYZ 的 json 响应
{
"Username": "bobslydale",
"FirstName": "bob",
"LastName": "slydale",
"GradeCustomFieldName": "CustomfieldXYZ",
"CustomfieldXYZ": "C"
}
我的问题是,当添加客户端 OIU 并且他们的 GradeCustomFieldName 为 CustomfieldOIU 时,我必须将其添加到我的类定义中,然后他们才能使用该应用程序。
【问题讨论】:
-
为什么不能把它保存为 JSON?存储为
JSON或存储为键值对,然后序列化成json发送给客户端。
标签: c# json restsharp simplejson