json.net C# 集合序列化



我必须构建如下所示的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}

有人可以告诉我我的代码出了什么问题吗?所有的帮助将不胜感激。

谢谢

您没有设置preJsonDatainputs属性。

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 所提到的,您没有设置preJsonDatainputs属性。

您缺少的另一部分是,在设置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;
}
}

最新更新