在数组中创建新的 JSON 项

Create new JSON item in an array

我正在 C# 和 JSON 中设置我的第一步。

我已经在 Visual Studio 环境中安装了 Web Essentials,并用它创建了一个 JSON class 结构。

我的JSON看起来如下:

{
    "project": {
        "common.DESCRIPTION": "Project_Description",
        ...
        "locations": [
            {
                "common.NAME": "Location_Name",
                ...

Web Essentials“选择性粘贴”(用于从 JSON 中创建 classes)生成如下内容:

public class Project
{
    public string commonDESCRIPTION { get; set; }
    ...
    public Location[] locations { get; set; }
    ...
}

public class Location
{
    public string commonNAME { get; set; }
    ...

我的代码如下所示:

Rootobject root = new Rootobject();
for (int i = 0; i < listbox_with_names.Items.Count; i++)
{
    root.project = new Project();
    root.project.locations[i] = new Location();
    root.project.locations[i].commonNAME = listbox_with_names.Items[i].ToString();

此代码失败,因为位置具有 null 值,导致 NullPointerException.
但是,rootproject 似乎没问题。

显然,我在这一行中做错了:

root.project.locations[i] = new Location();

有人知道如何在 C# 中声明一个对象,该对象将成为数组的一部分吗? (或者我完全错误地使用 new 运算符,就像我对 rootproject 所做的那样?)

P.S。有评论说我的问题是 another post 的重复,但是这个 post 非常大,很难找到我正在处理的一个问题(如果在那里提到它,我看了一眼,感觉像“TL;DR”(太长了,没看),抱歉)。

感谢 Peter B 和一些调试,我找到了解决方案:2 个单独的构造函数需要 运行 如您所见:

Rootobject root = new Rootobject();
root.project = new Project();
root.project.locations = new Location[listbox_with_names.Items.Count]; // construct the array
for (int i = 0; i < listbox_with_names.Items.Count; i++)
{
    root.project.locations[i] = new Location(); // construct each array member separately