我的应用程序绑定了一个REST API,它将此返回给我:
{
key: "XXXX-XXXX",
fields: {
customfield_10913: {
value: "L2"
}
}
}
我正在使用Newtonsoft JSON进行序列化和反序列化,我创建了这些模型以使其工作:
public class Issue
{
[JsonProperty("key")]
public string Key { get; set; }
[JsonProperty("fields")]
public Fields Fields { get; set; }
}
public class Fields
{
[JsonProperty("customfield_10913")]
public CustomField Level { get; set; }
}
public class CustomField
{
[JsonProperty("value")]
public string Value{ get; set; }
}
应用程序正在使用以下代码反序列化所有内容:
T model = JsonConvert.DeserializeObject<T>(result);
经过大量的业务逻辑后,我的WEB API应该返回一个新的JSON:
protected T Get()
{
return model;
}
我已经拥有了我从其他API中读取的JSON。 那么,我需要什么?
答案 0 :(得分:1)
您可以尝试以下功能
Issue model = deserializeObject<Issue>(result);
public T deserializeObject<T>(string result)
{
try
{
var settings = new JsonSerializerSettings
{
Formatting = Formatting.Indented,
NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore,
DefaultValueHandling = DefaultValueHandling.Ignore
};
var items = (T)JsonConvert.DeserializeObject(result, typeof(T), settings);
return items;
}
catch (Exception ex)
{
throw ex;
}
finally
{
}
}
答案 1 :(得分:0)
如果您的CustomField
媒体资源可以拥有任何媒体资源名称,则可以将其序列化为Dictionary<string, CustomField>
,如下所示:
public class Issue
{
public Issue()
{
this.Fields = new Dictionary<string, CustomField>();
}
[JsonProperty("key")]
public string Key { get; set; }
[JsonProperty("fields")]
public Dictionary<string, CustomField> Fields { get; set; }
}
然后,您可以为自定义字段使用任何字符串值。
工作fiddle。