使用Json.NET,有没有办法找出JSON的类型(数组、对象、字符串、整数等)。一个给定的.NET类型(或者实际上是一个MemberInfo)将被序列化成什么?
http://www.newtonsoft.com/json/help/html/serializationguide.htm
上面的文档给出了一个很好的想法,但是我可以使用Json.NET中的公共API吗?理想情况下,它还会考虑任何会影响序列化的自定义属性(如JsonObjectAttribute等)
发布于 2016-05-04 19:47:34
对于您所需要的,最合适的解决方案是使用JSON schemas。JSON.NET支持它们:
http://www.newtonsoft.com/jsonschema
其中一个特性正是您所需要的:
生成JSON模式从现有的.NET类型自动生成JSON模式。
从它的主页。
There are examples on its documentation.,如下所示:
.NET类型
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}生成JSON架构
JSchemaGenerator generator = new JSchemaGenerator();
JSchema schema = generator.Generate(typeof(Person));
// {
// "type": "object",
// "properties": {
// "Name": {
// "type": [ "string", "null" ]
// },
// "Age": { "type": "integer" }
// },
// "required": [ "Name", "Age" ]
// }关于许可证的说明
当我写答案的时候,我没有意识到你需要一个商业使用的许可证。This is the license link,包含在OP的评论中,@Oskar。
有关实现自定义解决方案的说明
自己实现真的很复杂,因为生成的JSON依赖于JSON.NET配置,它可以包括从简单属性到自定义(反)序列化程序,以及其他几种配置。因此,“预测”JSON.NET将生成什么JSON真的很难做到。最简单的方法是:
。
这样做非常困难,既要实例化一个有效的样例.NET对象,又要分析生成的JSON。要简化最后一步,可以从JSON创建一个.NET对象,并使用反射对其进行分析。缓存这些分析的结果,以避免过多地使用反射,这是相当慢的。
不幸的是,除了it will be available in the next release之外,Visual Studio中还没有JavaScript语言服务。这将使分析生成的Javascript对象变得更加容易。记住,JavaScript是一个文字JavaScript对象,可以很容易地实例化它,但是它是在JSON域中。
https://stackoverflow.com/questions/37024233
复制相似问题