C# 无法反序列化JSON消息,因为属性在C中有空格#
我试图使用C# 无法反序列化JSON消息,因为属性在C中有空格#,c#,json,json.net,C#,Json,Json.net,我试图使用Newtonsoft.JSON反序列化JSON消息,但他的一个属性有一个空格,结果返回null 我的反序列化邮件的代码: JavaScriptSerializer jss; jss = new JavaScriptSerializer(); using (reader = new StreamReader(stream)) { string message = reader.ReadToEnd(); JsonError jsonError = new JsonErr
Newtonsoft.JSON
反序列化JSON消息,但他的一个属性有一个空格,结果返回null
我的反序列化邮件的代码:
JavaScriptSerializer jss;
jss = new JavaScriptSerializer();
using (reader = new StreamReader(stream))
{
string message = reader.ReadToEnd();
JsonError jsonError = new JsonError();
jsonError = jss.Deserialize<JsonError>(message);
btxErrorMemo.Visible = true;
btxErrorMemo.Text = errorMessage;
btxStatusLbl.Text = "ERROR";
}
我将“错误消息”从
到
public IList errorMessage{get;set;}
因为我看到错误消息属于数组,而不仅仅是字符串,因此我不断得到null。多亏了@Ryan Wilson、@Alexander Petrov和@dbc。 解决办法很简单。 我使用Nettonsoft.Json来声明Json属性,但我使用System.Web.Script.Serialization来反序列化消息。 在我的例子中,一个简单的代码更改
JavaScriptSerializer jss;
var jsonError = jss.Deserialize<JsonError>(message);
JavaScriptSerializer jss;
var jsonError=jss.Deserialize(消息);
到
var jsonError=JsonConvert.DeserializeObject(消息);
成功了
谢谢大家的帮助。
JsonProperty
属性仅适用于Newtonsoft.Json
Nuget包或Json.net
序列化程序,参考资料您混淆了System.Web.Script.Serialization.JavaScriptSerializer
和Newtonsoft.Json.JsonSerializer
。如上所述,您使用的是[JsonProperty]
中的一个属性,它与JavaScriptSerializer
完全不同。您应该使用var jsonError=JsonConvert.DeserializeObject(消息)代码>。请参阅:。
{
"error":"xml data validation ",
"error message": ["\u03a4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf MesIdeMES19 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03bf\u03bd\u03b1\u03b4\u03af\u03ba\u03bf\u03c2 \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2.(\u03a0\u03c1\u03bf\u03c4\u03b5\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03af \u03bf \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 VAT \u03c4\u03b7\u03c2 \u03b5\u03c4\u03b1\u03b9\u03c1\u03b5\u03af\u03b1\u03c2 \u03b7 \u03c3\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ae \u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1. \u03ba\u03b1\u03b9 6 \u03c4\u03c5\u03c7\u03b1\u03af\u03b1 \u03b1\u03bb\u03c6\u03b1\u03c1\u03b1\u03c1\u03b9\u03b8\u03bc\u03b9\u03c4\u03ba\u03ac)","\u03a3\u03c4\u03bf \u03b5\u03bc\u03c0\u03cc\u03c1\u03b5\u03c5\u03bc\u03b1:1 \u03a4\u03bf \u03c0\u03ad\u03b4\u03b9\u03bf (GooDesGDS23) \u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03af\u03b4\u03bf\u03c5\u03c2 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03bb\u03c6\u03b1\u03c1\u03b9\u03b8\u03bc\u03b7\u03c4\u03b9\u03ba\u03cc"]
}
public string errorMessage { get; set; }
public IList<string> errorMessage { get; set; }
JavaScriptSerializer jss;
var jsonError = jss.Deserialize<JsonError>(message);
var jsonError = JsonConvert.DeserializeObject<JsonError>(message);