我必須反序列化我沒有任何控制權的JSON字符串。這是一個極端的例子,但它得到了關鍵:在.NET中反序列化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
,對Foo
及其成員DataContract
和DataMember
屬性一起,基本上是完美的,但它不太願意在JSON屬性和不正常的雙引號字符串。
JavaScriptSerializer
似乎處理非標報價,但我不能讓它忽略Xyz
或映射foo_baz
到Baz
和foo_bar
到Bar
。
這將成爲可分發類庫的一部分,因此我儘量避免使用第三方工具—,例如JSON.NET —。但是,如果沒有內置的方法來滿足我的需求,我很樂於接受第三方工具的建議。
我討厭指出明顯,但是這就是問題所在:「除了它不太願意在JSON屬性和不正常的雙引號字符串」 ......那麼,是不是JSON,這是* *幾乎JSON ,但不是JSON。許多事情沒有適當的JSON格式就會崩潰......例如,瀏覽器上的'JSON.parse()'。您需要創建有效的JSON。 – 2010-12-17 03:25:40
謝謝,但正如我在上面的第一句話中所述,我無法控制發送給我的東西。 – 2010-12-17 04:27:44