gpt4 book ai didi

c# - DataContractJsonSerializer 异常

转载 作者:行者123 更新时间:2023-11-30 12:10:39 27 4
gpt4 key购买 nike

我在使用我的类(class)时遇到此错误。

错误

Expecting element 'root' from namespace ''.. Encountered 'None' with name '', namespace

我的类(class)

[DataContract]
public class EntryData
{
[DataMember]
public string EntryId { get; set; }

[DataMember]
public string EmailAddress { get; set; }

[DataMember]
public string StatusCode { get; set; }

[DataMember]
public string TotalVoteCount { get; set; }

public static T Deserialise<T>(string json)
{
var obj = Activator.CreateInstance<T>();
using (var memoryStream = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
memoryStream.Position = 0;
var serializer = new DataContractJsonSerializer(obj.GetType());
obj = (T)serializer.ReadObject(memoryStream); // getting exception here
return obj;
}
}
}

用法

string responseJson = new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();
var results = EntryData.Deserialise<EntryData>(response)

我在网上看到它与 memoryStream position 有关,但如您所见,我将其设置为开头。

请帮忙。

Json 去处理程序

我在传入 JSON 时没有设置 StatusCode 或 TotalVoteCount。不过我不认为这是问题所在。

{
"EntryId":"43",
"EmailAddress":"test@email.com"
}

回答

我现在使用的不是在我的类中使用 Deserialize 方法。

//commented out this code.        
string responseJson = new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();
var results = EntryData.Deserialise<EntryData>(response)

// this is the way to go using JavaScriptSerializer
var serializer = new JavaScriptSerializer();
var results = serializer.Deserialize<EntryData>(response);

最佳答案

会不会是你的 JSON 名称与 C# 中的属性名称不匹配导致的?

我的理解是

{
"FirstName" : "Mark"
}

将能够反序列化为:

[DataContract]
public class Person
{
[DataMember]
public string FirstName {get; set;}
}

但这不能序列化

{
"Name" : "Mark"
}

除非您将 C# 类更改为具有明确的 DataMember 名称

[DataContract]
public class Person
{
[DataMember(Name="Name")]
public string FirstName {get; set;}
}

虽然我不确定这会导致哪个错误。我没有足够的第一手经验。

关于c# - DataContractJsonSerializer 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17595045/

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