首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从.NET类型获取Json.NET类型的JSON

从.NET类型获取Json.NET类型的JSON
EN

Stack Overflow用户
提问于 2016-05-04 17:51:48
回答 1查看 134关注 0票数 2

使用Json.NET,有没有办法找出JSON的类型(数组、对象、字符串、整数等)。一个给定的.NET类型(或者实际上是一个MemberInfo)将被序列化成什么?

http://www.newtonsoft.com/json/help/html/serializationguide.htm

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

EN

回答 1

Stack Overflow用户

发布于 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类型

代码语言:javascript
复制
public class Person
{
  public string Name { get; set; }
  public int Age { get; set; }
}

生成JSON架构

代码语言:javascript
复制
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真的很难做到。最简单的方法是:

  • 来实例化object
  • serialize it
  • 的示例.NET并分析生成的JSON

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

不幸的是,除了it will be available in the next release之外,Visual Studio中还没有JavaScript语言服务。这将使分析生成的Javascript对象变得更加容易。记住,JavaScript是一个文字JavaScript对象,可以很容易地实例化它,但是它是在JSON域中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37024233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档