json.net C#集合序列化

时间:2018-08-22 19:46:36

标签: c# list serialization json.net

我必须构建一个如下所示的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”,“输入”:空}

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

谢谢

3 个答案:

答案 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

这将解决您的代码。