我必须反序列化我无法控制的JSON字符串。这是一个极端的例子,但它得到了重点:
string fooJson = @"
{
'foo_baz': 123,
foo_bar: 'buuuu',
""Xyz"": ""\/Date(405928800000-0600)\/"" //1982-11-12
}";
JSON必须反序列化到我无法更改的C#类中:
public class Foo
{
public string Bar { get; set; }
public int Baz { get; private set; }
public DateTime Xyz { get; set; }
}
序列化Foo
没问题。
反序列化后,结果应该是......
Bar
== "buuuu"
Baz
== 123
Xyz
== DateTime.MinValue
或未初始化......但我有问题。
DataContractJsonSerializer
以及DataContract
及其成员上的DataMember
和Foo
属性基本上是完美的,除非它对JSON属性和字符串不正确双引号。
JavaScriptSerializer
似乎处理非标准引用,但我无法忽略Xyz
或将foo_baz
映射到Baz
和foo_bar
到Bar
。
这将成为可分发类库的一部分,因此我尽可能地避免使用第三方工具(如JSON.NET)。但是,如果没有内置的方法来做我需要的东西,我愿意接受第三方工具的建议。
答案 0 :(得分:0)
如果您无法控制发送给您的内容,那么您将创建自己的自定义解析引擎,因为没有JSON解析可以正确地处理您收到的内容。
也许您可以清理/格式化您收到INTO JSON字符串的字符串,然后将其解析为JSON,否则您必须编写自己的解析实现。
这部分不会很快结束。你不会喜欢它。我不是你的王。