C# 将数组添加到属性

C# 将数组添加到属性,c#,asp.net-core,json.net,C#,Asp.net Core,Json.net,我正在试图找到一种方法,将数组添加到属性中。目前,我正在添加非arry,没有任何问题 var root=JObject.ParsecontractJson.ToString; //获取公司名称节点 var companyNameMatches=root.subjects .字体 .其中x=>x[问题]!=null&&x[问题].ToString==公司名称; //将应答结果添加到“公司名称”节点 foreach JObject jo在CompanyName中匹配 { jo.Addanswer,n

我正在试图找到一种方法,将数组添加到属性中。目前,我正在添加非arry,没有任何问题

var root=JObject.ParsecontractJson.ToString; //获取公司名称节点 var companyNameMatches=root.subjects .字体 .其中x=>x[问题]!=null&&x[问题].ToString==公司名称; //将应答结果添加到“公司名称”节点 foreach JObject jo在CompanyName中匹配 { jo.Addanswer,new JObjectnew JPropertyresult,Request.Form[Companyname].ToString; } 那么,这一行…如何将答案放入数组中:

jo.Addanswer,new JObjectnew JPropertyresult,Request.Form[Companyname].ToString; 正在查找此输出:

"answer":[ 
    { 
       "result": "value"
    }
 ]

这是因为您正在使用JObject

使用JArray对象。JArray是一个JContainer,它是一个JToken,可以添加到JObject中

例如,用户的json:

string[] parameterNames = new string[] { "Test1", "Test2", "Test3" };

JArray jarrayObj = new JArray();

foreach (string parameterName in parameterNames)
{
    jarrayObj.Add(parameterName);
}

string bDay = "2011-05-06";
string email = "dude@test.com";

JObject UpdateTestProfile = new JObject(
                               new JProperty("_delete", jarrayObj),
                               new JProperty("birthday", bDay),
                               new JProperty("email", email));

Console.WriteLine(UpdateTestProfile.ToString());

这是因为您正在使用JObject

使用JArray对象。JArray是一个JContainer,它是一个JToken,可以添加到JObject中

例如,用户的json:

string[] parameterNames = new string[] { "Test1", "Test2", "Test3" };

JArray jarrayObj = new JArray();

foreach (string parameterName in parameterNames)
{
    jarrayObj.Add(parameterName);
}

string bDay = "2011-05-06";
string email = "dude@test.com";

JObject UpdateTestProfile = new JObject(
                               new JProperty("_delete", jarrayObj),
                               new JProperty("birthday", bDay),
                               new JProperty("email", email));

Console.WriteLine(UpdateTestProfile.ToString());
您需要将answer属性设置为数组,因此应该使用JArray。更改此行:

jo.Add("answer", new JObject(new JProperty("result", Request.Form["Companyname"].ToString())));
致:

您需要将answer属性设置为数组,因此应该使用JArray。更改此行:

jo.Add("answer", new JObject(new JProperty("result", Request.Form["Companyname"].ToString())));
致:


您当前正在将其设置为单个字符串值-是否希望它成为包含该单个字符串的数组?如果是的话,你试过这样做吗?新建JPropertyresult,新建[]{Request.Form[Companyname].ToString}嗨,Jon。我应该更具描述性。我在找:``答案:[{result:value}]``我建议你进一步编辑这个问题-你说你想把结果变成数组,但你不想-你想把答案变成数组。@JonSkeet是的,谢谢你指出这一点。我已进行了建议的编辑。您当前正在将其设置为单个字符串值-是否希望它成为包含该单个字符串的数组?如果是的话,你试过这样做吗?新建JPropertyresult,新建[]{Request.Form[Companyname].ToString}嗨,Jon。我应该更具描述性。我在找:``答案:[{result:value}]``我建议你进一步编辑这个问题-你说你想把结果变成数组,但你不想-你想把答案变成数组。@JonSkeet是的,谢谢你指出这一点。我已经做了建议的编辑。