如何使用 C# 创建一个复杂的 JSON 对象

杰森

我有这样一个 JSON 结构:

{
 "name": "flare",
 "children": [
  {
   "name": "analytics",
   "children": [
    {
     "name": "cluster",
     "children": [
      {"name": "AgglomerativeCluster", "size": 3938},
      {"name": "MergeEdge", "size": 743}
     ]
    },
    {
     "name": "graph",
     "children": [
      {"name": "BetweennessCentrality", "size": 3534},
      {"name": "SpanningTree", "size": 3416}
     ]
    },
    {
     "name": "optimization",
     "children": [
      {"name": "AspectRatioBanker", "size": 7074}
     ]
    }
   ]
  },
  {
   "name": "animate",
   "children": [
    {"name": "Easing", "size": 17010},
    {"name": "FunctionSequence", "size": 5842},
    {
     "name": "interpolate",
     "children": [
      {"name": "ArrayInterpolator", "size": 1983},
      {"name": "RectangleInterpolator", "size": 2042}
     ]
    },
    {"name": "ISchedulable", "size": 1041},
    {"name": "Tween", "size": 6006}
   ]
  }
 ]
}

如何使用 C# 生成这样的 JSON,我发现了如何制作 JSON 数组,但这就是我所拥有的。我不知道如何制作children":属性,或者我不知道如何制作由其他 JSON 对象或其他 JSON 数组组成的 JSON 对象。你能给我一点动力,让我可以生成这样一个 JSON 对象吗?谢谢。

马特·伯兰德

如果你使用Json.Net(你应该使用),你可以创建一个这样的类:

public class MyObject
{   
    public string Name { get; set; }
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public List<MyObject> Children { get; set; }
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public int? Size { get; set; }
}

然后,如果你创建你的对象是这样(我没有做这件事,只是几级-显然你不具有填充,一次就全部):

var root = new MyObject() 
{
    Name = "flare",
    Children = new List<MyObject>() 
    {
        new MyObject()
        {
            Name = "analytics",
            Children = new List<MyObject>() 
            {
                new MyObject()
                {
                    Name = "cluster",
                    Children = new List<MyObject>() 
                    {
                        new MyObject() { Name = "AgglomerativeCluster", Size = 3938 }
                    }
                }
            }
        }
    }
};

然后:

var json = JsonConvert.SerializeObject(root, new JsonSerializerSettings 
{ 
    ContractResolver = new CamelCasePropertyNamesContractResolver()
}));

这会给你(为了可读性,事后格式化):

{
    "name": "flare",
    "children": [{
        "name": "analytics",
        "children": [{
            "name": "cluster",
            "children": [{
                "name": "AgglomerativeCluster",
                "size": 3938
            }]
        }]
    }]
}

一些注意事项:

NullValueHandling = NullValueHandling.Ignore允许您禁止包含值为 null 的属性。如果你不关心Name = "flare"有一个的对象size: null,那么你就不用担心它。但是如果你这样做了,使用它可以节省至少三个不同的对象,这些对象基本相同但缺少一些属性。

CamelCasePropertyNamesContractResolver将自动使用驼峰式大小写您的属性名称。您可以将属性设置MyObject为驼峰式,但这不是 .NET 标准。如果您可以打破该约定,那么您就不需要它。另一种选择是PropertyNameJsonPropertyAttributefor each .NET 属性中进行设置

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何分裂和JSON创建一个对象?

如何使用多个对象创建一个JSON数组

Scala:如何创建一个简单的嵌套JSON对象

从ID为名称的json对象创建一个强类型的c#对象

如何创建一个复杂的嵌套->属于对象?

如何使用C#比较两个Json对象

如何在AngularJs中推送JSON对象并创建一个嵌套对象

合并Java中的两个对象列表以使用Jackson创建一个Json

如何使用C#在Unity中解析复杂的JSON对象

如何从对象和变量创建一个Json?

如何创建一个复杂的Javascript对象

使用JSON文件名及其bash内容创建一个JSON对象

C ++:如何创建一个类的对象的多集合?

创建一个JSON对象数组

如何使用JSON创建对象?

如何访问一个JSON对象?

如何正确创建一个单例对象并在C ++中使用它?

如何使用键从json数组中获取json对象属于一个json对象

如何从退出一个创建新的json对象?

我将如何使用此 JSON 创建 C# 对象

从 C# 模型创建一个嵌套的 json 对象

如何使用 Python 从另一个对象创建一个新的 JSON 对象?

如何从对象创建一个 json 字符串?– 它返回一个空的“[]”?

如何使用输入变量创建一个json对象

如何从另一个 json 对象有效地创建嵌套的 json

如何覆盖一个json对象?

创建一个包含 json 对象数组的 json 对象

使用另一个复杂对象列表对复杂对象列表进行排序 C#

使用 JavaScript,如何遍历 2 个 JSON 对象,比较它们的字段并根据比较创建一个新的 JSON 对象?