gpt4 book ai didi

c# - 如何调试不工作的 JSON 解析?

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:45 25 4
gpt4 key购买 nike

这是 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

这是我使用的数据契约(Contract)。

[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 或空字符串。我只是不打他们。这里可能有什么问题,我该如何调试?

最佳答案

可以这么说,您瞄准了错误的部分,或者使用了错误的标签。您不应尝试解析 Customer,而应解析 CustomerStatuses,因为这是您的根对象。您需要再上一节课。希望您的客户会接受这一点。

这是数据契约(Contract)的代码。我包含了字段 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;

这肯定会在明天出现在我的博客上!

关于c# - 如何调试不工作的 JSON 解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14782308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com