这是this one的后续问题。我问如何解析,我得到了答案。话虽如此,我仍然没有让它工作,但可能不是因为答案不够。
我想调试不当行为,但我坦率地不知道如何。
这是我的反序列化代码。
DataContractJsonSerializer serializer
= new DataContractJsonSerializer(typeof(Customer));
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(textToParse));
Envelope customer = (Customer)serializer.ReadObject(stream);
return "Status = " + customer.Status + " and guid = " + customer.Guid
这是我使用的数据合约。
[DataContract]
public class Customer
{
[DataMember(Name = "Status")]
public int Status;
[DataMember(Name = "CustomerId")]
public String Guid;
[DataMember(Name = "Information")]
public Object Info;
}
这是要解析的文本的头部。
{"CustomerStatuses":[{
"Information":[{"Guid":"1","Role":"Customer"}],
"CustomerId":"12345678-1234-1324-1234-123456781234",
"Status":"4"},
"Information":[{"Guid":"5","Role":"Customer"}],
"CustomerId":"12345678-1234-1324-1234-123456781234",
"Status":"6"},
"Information":[{"Guid":"7","Role":"Seller"}],
"CustomerId":"12345678-1234-1324-1234-123456781234",
"Status":"6"},
...
问题是属性 Status 为0, Guid 为null或空字符串。我只是没打他们。这里有什么问题,我该如何调试呢?
答案 0 :(得分:0)
你的目标是错误的部分,或咆哮错误的标签,可以这么说。您不应该尝试解析 Customer ,而是 CustomerStatuses ,因为那是您的根对象。您 还需要一个课程。希望您的客户能够接受。
这是数据合同的代码。我已经包含了字段 Info ,因为它看起来像你需要它,但是随着规范的发展,你也可以省略它。
[DataContract]
public class CustomerStatuses
{
[DataMember(Name = "CustomerStatuses")]
public IEnumerate<Customer> Customers;
}
[DataContract]
public class Customer
{
[DataMember(Name = "Status")]
public int Status;
[DataMember(Name = "CustomerId")]
public String Guid;
[DataMember(Name = "Information")]
public Object Info;
}
然后,您可以通过此代码访问这些内容。
DataContractJsonSerializer serializer
= new DataContractJsonSerializer(typeof(CustomerStatuses));
MemoryStream stream = new MemoryStream(Encoding.ASCII.GetBytes(jsonText));
CustomerStatuses parser = (CustomerStatuses)serializer.ReadObject(stream);
String guid = parser.DocumentStatuses.FirstOrDefault().Guid;
int status = parser.DocumentStatuses.FirstOrDefault().Status;
明天这肯定会出现在我的博客上!