json.net c#集合序列化

json.net c#集合序列化,c#,list,serialization,json.net,C#,List,Serialization,Json.net,我必须构建一个JSON数据,如下所示。我在C#中使用JSON.net来构建结构。 { “用户名”:“xxxx”, “密码”:“yyyy”, “投入”: [ { “名称”:“中交” }, { “名称”:“dddd” } ] } C代码如下所示 **public string MethodName(ref rdServerObjects rdObjects) { RootObject preJsonData = new RootObject();

我必须构建一个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; }
}**
**公共字符串方法名(ref rdServerObjects rdObjects)
{
RootObject preJsonData=新的RootObject();
列表输入=新列表();
输入=新输入();
preJsonData.username=“xxxx”;
preJsonData.password=“yyyy”;
input.name=“cccc”;
输入。添加(输入);
input.name=“dddd”;
输入。添加(输入);
字符串postJsonData=JsonConvert.SerializeObject(preJsonData);
返回postJsonData;
}
}
公共类根对象
{
公共字符串用户名{get;set;}
公共字符串密码{get;set;}
公共列表输入{get;set;}
}
公共类输入
{
公共字符串名称{get;set;}
}**
当我的代码执行时,输出如下:

{“用户名”:“xxxx”,“密码”:“yyyy”,“输入”:null}

有人能告诉我我的代码有什么问题吗?我们将不胜感激


谢谢

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;
    }
}
    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;
publicstringmethodname(ref-rdServerObjects-rdObjects)
{
RootObject preJsonData=新的RootObject();
列表输入=新列表();
输入=新输入();
preJsonData.username=“xxxx”;
preJsonData.password=“yyyy”;
input.name=“cccc”;
输入。添加(输入);
input=new input();//添加此行以避免先覆盖
input.name=“dddd”;
输入。添加(输入);
//这条线
preJsonData.inputs=输入;
字符串postJsonData=JsonConvert.SerializeObject(preJsonData);
//字符串postJsonData=newJavaScriptSerializer().Serialize(preJsonData);
返回postJsonData;
}
}

您没有设置
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;
    }
}
    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;
列表输入=新列表();
输入=新输入();
preJsonData.username=“xxxx”;
preJsonData.password=“yyyy”;
input.name=“cccc”;
输入。添加(输入);
input.name=“dddd”;
输入。添加(输入);

preJsonData.inputs=输入// 正如Phiter&Ron所提到的,您没有设置
preJsonData
inputs
属性

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;
    }
}
    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;
您缺少的另一个部分是,在设置
名称之前,不要重新初始化
输入
变量。这将导致您在响应中得到“dddd”

Input input = new Input();
input.name = "cccc";
inputs.Add(input);
input = new Input();
input.name = "dddd";
inputs.Add(input);
preJsonData.inputs = inputs;

这将修复您的代码

嘿,你和我的分数差不多。拿这10个extra@Phiter还有你!谢谢…还有一个小问题悬而未决。即使在我做了上述更改之后,我仍然得到{“用户名”:“xxxx”,“密码”:“yyyy”,“输入”:[{“名称”:“dddd”},{“名称”:“dddd”}]}…看起来第一个输入没有生效或被任何后续输入覆盖。添加()…这里发生了什么?哦,不是很棘手吗?问题是,输入是相同的,所以同一个对象会在列表中插入两次,当您修改它时,它也会在列表中更新。检查dj79的答案,了解我们忽略的问题的修复方法有些……有效。。。谢谢大家……谢谢你们。