如果这是REST结果:
[ {
"sessionId" : "232e3ef6-eb80-413e-bce0-ebb167bf90d0",
"instanceId" : "6070f583-c2aa-4a1f-8541-1d0b22e365fe",
"clientId" : "com.whatever",
"deviceId" : "abac87cca",
"document" : {
"nameOfHolder" : "SQUARE PANTS",
"dateOfExpiry" : "161010",
"features" : [ "DCA" ],
"typegroups" : [ 1, 2 ]
}
} ]
... C#类看起来是什么样的,我可以成功阅读document
子部分?
目前我正在使用HttpClient
和Content.ReadAsAsync
成功阅读,但前提是我错过了"文档"部分:
public partial class ScanListItem
{
public string SessionId { get; set; }
public string InstanceId { get; set; }
public string ClientId { get; set; }
public string DeviceId { get; set; }
// How do I represent the "document" here?
}
我尝试过使用这样的词典:
public Dictionary<string, string> Document{ get; set; }
...一直有效,直到它试图解析&#34;功能&#34; element - 我认为因为features
是一个数组(Unexpected character encountered while parsing value: [. Path '[0].document.features.
)
以下是我想做的事 - 这是可能的:
直接用名字代表他们,类似于:
public string DocumentNameOfHolder { get; set; }
(当我尝试这个时,该字段仍为空白)
答案 0 :(得分:4)
这个怎么样?
public class Document
{
public string NameOfHolder { get; set; }
public string DateOfExpiry { get; set; }
public List<string> Features { get; set; }
public List<int> Typegroups { get; set; }
}
public class ScanListItem
{
public string SessionId { get; set; }
public string InstanceId { get; set; }
public string ClientId { get; set; }
public string DeviceId { get; set; }
public Document document { get; set; }
}
答案 1 :(得分:1)
你真的有两种选择。
您可以使用值为对象的词典,因为它可以存储您提供的任何内容。例如
public Dictionary<string, object> Document{ get; set; }
但实际上正确的方法是使用像这样的子文档类。
public partial class ScanListItem
{
public string SessionId { get; set; }
public string InstanceId { get; set; }
public string ClientId { get; set; }
public string DeviceId { get; set; }
public Document Document {get;set;}
}
public class Document
{
public string NameOfHolder {get;set;}
public List<string> Features {get;set;}
//Other properties here.
}
你可以在这里看到一个.net小提琴如何工作:https://dotnetfiddle.net/6IsDiN
答案 2 :(得分:0)
有许多用于处理JSON的库。其中最值得注意的是Json.NET。
以下是一个关于seriliazing和反序列化来自documentation的对象的示例:
Product product = new Product();
product.Name = "Apple";
product.ExpiryDate = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };
string output = JsonConvert.SerializeObject(product);
//{
// "Name": "Apple",
// "ExpiryDate": "2008-12-28T00:00:00",
// "Price": 3.99,
// "Sizes": [
// "Small",
// "Medium",
// "Large"
// ]
//}
Product deserializedProduct = JsonConvert.DeserializeObject<Product>(output);
只要您的C#类与您要查找的内容一致,您就可以执行以下操作:
Session sess = JsonConvert.DeserializeObject<Session>(restOutputString);
Document doc = sess.Document;