用于从.NET类型获取Json类型的Json.NET api

用于从.NET类型获取Json类型的Json.NET api,.net,serialization,json.net,.net,Serialization,Json.net,有了Json.NET,有没有办法找出给定的.NET类型(或者实际上是MemberInfo)将序列化到的Json类型(数组、对象、字符串、整数等) 上面的文档给出了一个很好的想法,但是Json.NET中是否有我可以使用的公共API?理想情况下,它还将考虑任何会影响序列化的自定义属性(如JsonObjectAttribute等)对于您需要的内容,最合适的解决方案是使用。JSON.NET对它们提供了支持: 其中一个功能正是您所需要的: 生成JSON模式 从现有的.NET类型自动生成JSON模式 从

有了Json.NET,有没有办法找出给定的.NET类型(或者实际上是
MemberInfo
)将序列化到的Json类型(数组、对象、字符串、整数等)


上面的文档给出了一个很好的想法,但是Json.NET中是否有我可以使用的公共API?理想情况下,它还将考虑任何会影响序列化的自定义属性(如
JsonObjectAttribute
等)

对于您需要的内容,最合适的解决方案是使用。JSON.NET对它们提供了支持:

其中一个功能正是您所需要的:

生成JSON模式 从现有的.NET类型自动生成JSON模式

从它的主页

这里,像这样:

.NET类型 生成JSON模式 关于许可证的说明 当我写下答案时,我没有意识到你需要商业使用许可证,包括在OP@Oskar的评论中

关于实现自定义解决方案的注意事项 执行自己的实现非常复杂,因为生成的JSON依赖于JSON.NET配置,配置可以包括从简单属性到自定义(反)序列化程序以及其他几种配置。因此,“预测”JSON.NET将生成什么JSON真的很难。最简单的方法是:

  • 引用示例.NET对象的步骤
  • 序列化它
  • 并分析生成的JSON
这样做非常困难,既要实例化有效的示例.NET对象,又要分析生成的JSON。为了简化最后一步,您可以从JSON创建一个.NET对象,并使用反射对其进行分析。并缓存这些分析的结果,以避免过多地使用反射,这相当缓慢


不幸的是,VisualStudio中仍然没有JavaScript语言服务,但是。这将使分析结果Javascript对象变得更加容易。请记住,JSON是一个文字JavaScript对象,可以很容易地实例化,但在JavaScript域中。

这个问题没有多大意义,因为JavaScript不是类型化语言。你需要这个到底是为了什么?了解您的用例有助于理解和回答问题。这个问题与JavaScript无关。JSON有一些基本数据类型(),出于各种原因,我想知道一个给定的.NET类型将被序列化为哪种类型(当使用JSON.NET时)。基本上,JSON表示一个JavaScript对象,带有JavaScript属性,这些属性是松散类型的(例如,尽管某物是一个数字,但可以将其用作字符串)。我问的是用例,因为可能有一个不同的解决方案来满足您的需求。JSON有更严格的类型定义,比如你看到我的答案了吗?它对你有用吗?谢谢,这看起来很有希望,但不幸的是它不是免费的(至少用于商业用途),所以我还没有查看它
public class Person
{
  public string Name { get; set; }
  public int Age { get; set; }
}
JSchemaGenerator generator = new JSchemaGenerator();

JSchema schema = generator.Generate(typeof(Person));
// {
//   "type": "object",
//   "properties": {
//     "Name": {
//       "type": [ "string", "null" ]
//     },
//     "Age": { "type": "integer" }
//   },
//   "required": [ "Name", "Age" ]
// }