【发布时间】:2015-09-04 09:08:51
【问题描述】:
我在 .NET 中使用 JavaScriptSerializer 反序列化结构,这些结构可以是您的标准平面键/值对,如下所示:
{
"Value": 3.14,
"Type": "Real"
}
或者更复杂,具有像这样的内部分层值对象:
{
"Value": { "something": "test" },
"Type": "JsonData"
}
我遇到的问题是,在"Type": "JsonData" 的情况下,对象可以是任意的。我无法对其结构做出任何假设。
但是,我的应用程序的“上层”将知道如何处理这些数据。
因此,我需要想办法将 Value 字段保留为字符串,无论它包含整数、字符串还是完整的 JSON 结构。基本上,我不希望JavaScriptSerializer 解析其中的任何内容。我很想能有这样的课程:
public class JsonObject
{
public string Value { get; set; }
public string Type { get; set; }
}
Value 包含我的 JSON 中未处理的原始值。
有没有办法告诉 .NET 不要解析我的 JSON 的某些部分?
请不要建议使用像 JSON.NET 这样的其他库。我知道它可能能够做到这一点,但这是针对将作为库分发的项目——这就是为什么我宁愿让我的库仅依赖于标准 .NET 框架。
【问题讨论】:
-
我必须说 JSON.Net 是最好的
json解析库。 -
我知道并且我在许多其他项目中多次使用它:) 但是它对我的项目来说完全是矫枉过正,我真的必须使用标准 .NET 运行时提供的东西,仅此而已!跨度>
-
ASP.NET MVC also 使用 Json.Net,这应该可以解决需求。 “作为库”的要求并不意味着您不能使用 Json.NET。它并不过分,它比过时的 JavaScriptSerializer 更简单、更容易、更兼容。
-
此外,什么是问题所在?您不能简单地反序列化为您提供的类型吗?您尝试了哪些方法,问题是什么?
-
@PanagiotisKanavos “我遇到的问题是,在 "Type": "JsonData" 的情况下,对象可以是任意的。我无法对其结构做出任何假设。 "
标签: c# .net json javascriptserializer