我必须构建如下所示的JSON数据。我正在使用 C# 中的 JSON.net 来构建结构。{ "用户名":"xxxx", "密码":"yyyy", "输入" : [ { "名称" : "中交" }, { "名称" : "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","inputs":null}
有人可以告诉我我的代码出了什么问题吗?所有的帮助将不胜感激。
谢谢
您没有设置preJsonData
的inputs
属性。
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);
preJsonData.inputs = inputs; //<-- this bad boy
string postJsonData = JsonConvert.SerializeObject(preJsonData);
//string postJsonData = new JavaScriptSerializer().Serialize(preJsonData);
return postJsonData;
正如 Phiter & Ron 所提到的,您没有设置preJsonData
的inputs
属性。
您缺少的另一部分是,在设置input
变量之前不要重新初始化其name
。这将导致您在响应中得到"dddd"。
Input input = new Input();
input.name = "cccc";
inputs.Add(input);
input = new Input();
input.name = "dddd";
inputs.Add(input);
preJsonData.inputs = inputs;
这将修复您的代码。
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;
}
}