gpt4 book ai didi

c# - 如何在 C# 中反序列化 JSON 字符串是正确的?

转载 作者:太空狗 更新时间:2023-10-30 01:25:10 25 4
gpt4 key购买 nike

帮助处理JSON反序列化正确答案。例如,我们有以下内容的 JSON 响应:

{"variant":"otvet1",
"source":"otvet2",
"items":[
{"list":"512"},
{"vist":"315"},
{"zist":"561"}]}

使用以下代码反序列化:

  [DataContract]
public partial class ItemsList
{
[DataMember(Name = "list")]
public string lisType { get; set; }

[DataMember(Name = "vist")]
public string vistType { get; set; }

[DataMember(Name = "zist")]
public string zistType { get; set; }
}

[DataContract]
public partial class SourceList
{
[DataMember(Name = "variant")]
public string variantType { get; set; }

[DataMember(Name = "source")]
public string vistType { get; set; }

[DataMember(Name = "items")]
public List <ItemsList> TestItemsList { get; set; }
}

public class JsonStringSerializer
{
public static T Deserialize<T>(string strData) where T : class
{
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strData));
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
T tRet = (T)ser.ReadObject(ms);
ms.Close();
return (tRet);
}
}

private static SourceList SourceTempList;
SourceTempList = JsonStringSerializer.Deserialize<SourceList>(e.Result); //in e.Result JSON response

在前面的代码中,它可以工作,但是如果你改变 JSON 响应,它就不起作用了......新的 JSON 响应:

{"variant":"otvet1",
"source":"otvet2",
"items":[3,
{"list":"512"},
{"vist":"315"},
{"zist":"561"}]}

在这种情况下,反序列化的c#代码不起作用...出现了第 3 个项目,请告诉我如何反序列化对此的 JSON 响应?可以列出 vist 和 zist ...帮助我...请

最佳答案

从历史上看,DataContractJsonSerializer 已被视为已损坏。建议使用 JSON.Net http://james.newtonking.com/projects/json-net.aspx

查看 Deserialization problem with DataContractJsonSerializer

关于c# - 如何在 C# 中反序列化 JSON 字符串是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7558162/

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