我必须构建一个如下所示的JSON数据。我在C#中使用JSON.net构建结构。 { “用户名”:“ xxxx”, “ password”:“ yyyy”, “输入”: [ { “名称”:“ cccc” }, { “名称”:“ dddd” } ] }
C#代码如下所示。
**public string MethodName(ref rdServerObjects rdObjects)
{
RootObject preJsonData = new RootObject();
List<Input> inputs = new List<Input>();
Input input = new Input();
preJsonData.username = "xxxx";
preJsonData.password = "yyyy";
input.name = "cccc";
inputs.Add(input);
input.name = "dddd";
inputs.Add(input);
string postJsonData = JsonConvert.SerializeObject(preJsonData);
return postJsonData;
}
}
public class RootObject
{
public string username { get; set; }
public string password { get; set; }
public List<Input> inputs { get; set; }
}
public class Input
{
public string name { get; set; }
}**
执行我的代码时,输出为:
{“用户名”:“ xxxx”,“密码”:“ yyyy”,“输入”:空}
有人可以告诉我我的代码有什么问题吗?所有帮助将不胜感激。
谢谢
答案 0 :(得分:2)
preJsonData.inputs = inputs
...您在MethodName
中创建的列表根本没有连接到preJsonData
内部的列表。
public string MethodName(ref rdServerObjects rdObjects)
{
RootObject preJsonData = new RootObject();
List<Input> inputs = new List<Input>();
Input input = new Input();
preJsonData.username = "xxxx";
preJsonData.password = "yyyy";
input.name = "cccc";
inputs.Add(input);
input = new Input(); //Add this line to keep from overwriting first
input.name = "dddd";
inputs.Add(input);
//THIS LINE
preJsonData.inputs = inputs;
string postJsonData = JsonConvert.SerializeObject(preJsonData);
//string postJsonData = new JavaScriptSerializer().Serialize(preJsonData);
return postJsonData;
}
}
答案 1 :(得分:2)
您没有设置inputs
的{{1}}属性。
preJsonData
答案 2 :(得分:2)
如Phiter&Ron所述,您没有设置inputs
的{{1}}属性。
您缺少的另一部分是,在设置变量preJsonData
之前不要重新初始化input
变量。这将导致您在响应中得到“ dddd”。
name
这将解决您的代码。