【发布时间】:2016-02-26 10:54:53
【问题描述】:
我遇到了奇怪的问题。下面你可以看到我的测试代码
[DataContract]
public class Test
{
[DataMember]
public string Name { get; set; }
}
private static void Main(string[] args)
{
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes("{ \"Name\" : Isometext }"));
var s = new DataContractJsonSerializer(typeof(Test));
var r = (Test)s.ReadObject(ms);
Console.WriteLine(r.Name);
}
name = Isometext - 好的
name = Tsometext -Exception
name = Nsometext - 好的
name = sometext - 例外
name = nsometext - 例外
为什么 DataContractJsonSerializer 将以大写 I 和 N 开头的值视为正确值?是bug吗?
【问题讨论】:
-
似乎是一个无效的 json 字符串。您是否尝试将 sometext 字符串用双引号括起来,例如
"{ \"Name\" : \"sometext\" }" -
是否必须使用DataContractJsonSerializer?我知道这个问题与您提出的问题无关。但是我仍然很好奇,当 Newtonsoft.Json 可以为您提供更好的性能时,您为什么要使用 DataContractJsonSerializer。
-
仅适用于
UTF8。 -
@Krishna Kumar N,这个序列化器用于 wcf 并将其更改为 Newtonsoft.Json 并不简单。但是是的,我需要更改它
标签: c# json wcf datacontractjsonserializer