在数组中创建新的 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
.
但是,root
和 project
似乎没问题。
显然,我在这一行中做错了:
root.project.locations[i] = new Location();
有人知道如何在 C# 中声明一个对象,该对象将成为数组的一部分吗? (或者我完全错误地使用 new
运算符,就像我对 root
和 project
所做的那样?)
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
我正在 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
.
但是,root
和 project
似乎没问题。
显然,我在这一行中做错了:
root.project.locations[i] = new Location();
有人知道如何在 C# 中声明一个对象,该对象将成为数组的一部分吗? (或者我完全错误地使用 new
运算符,就像我对 root
和 project
所做的那样?)
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