Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp net无法接受带括号[]的json_C#_Json - Fatal编程技术网

C# Asp net无法接受带括号[]的json

C# Asp net无法接受带括号[]的json,c#,json,C#,Json,下面是我如何在Asp.net中创建注册表的方法 public class RegisterBindingModel { public string Email { get; set; } public string Password { get; set; } public string ConfirmPassword { get; set; } } async void Register(string email,st

下面是我如何在Asp.net中创建注册表的方法

 public class RegisterBindingModel
    {

        public string Email { get; set; }
        public string Password { get; set; }
        public string ConfirmPassword { get; set; }
    }
    async void Register(string email,string password, string confirmPassword)
    {
        List<RegisterBindingModel> mItems = new List<RegisterBindingModel>();
        mItems.Add(new RegisterBindingModel { Email = email, Password = password, ConfirmPassword = confirmPassword });

        var json = JsonConvert.SerializeObject(mItems);
        using (var client = new HttpClient())
        {
            client.Timeout = TimeSpan.FromMilliseconds(20000);
            var response = await client.PostAsync("http://localhost:49826/api/Account/Register", new StringContent(json, Encoding.UTF8, "application/json"));

            if (response.IsSuccessStatusCode)
            {
                string content = await response.Content.ReadAsStringAsync();
                Console.Write((int)response.StatusCode);

            }
            else
            {
                string content = await response.Content.ReadAsStringAsync();
                Console.Write((int)response.StatusCode);

            }
        }

    }
    private void button1_Click(object sender, EventArgs e)
    {
        Register("dimitris2@in.gr", "Password1?", "Password1?");
    }
公共类注册绑定模型
{
公共字符串电子邮件{get;set;}
公共字符串密码{get;set;}
公共字符串ConfirmPassword{get;set;}
}
异步无效寄存器(字符串电子邮件、字符串密码、字符串确认密码)
{
List mItems=新列表();
添加(新注册绑定模型{Email=Email,Password=Password,ConfirmPassword=ConfirmPassword});
var json=JsonConvert.SerializeObject(mItems);
使用(var client=new HttpClient())
{
client.Timeout=TimeSpan.fromMillistics(20000);
var response=wait client.PostAsync(“http://localhost:49826/api/Account/Register,新的StringContent(json,Encoding.UTF8,“application/json”);
if(响应。IsSuccessStatusCode)
{
string content=wait response.content.ReadAsStringAsync();
Console.Write((int)response.StatusCode);
}
其他的
{
string content=wait response.content.ReadAsStringAsync();
Console.Write((int)response.StatusCode);
}
}
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
寄存器(“dimitris2@in.gr“,“密码1?”,“密码1?”);
}
我收到错误400无效请求无法反序列化当前json数组如1,2,3。。。若我将从字符串中删除第一个和最后一个括号,那个么它就工作了。但它不是标准的json格式。如何解决这个问题

这是我的字符串的外观:


[{“电子邮件”:dimitris2@in.gr“,“Password”:“Password1?”,“ConfirmPassword”:“Password1?”}]

看起来您正在将单个元素数组传递给服务器,而服务器希望单个元素自己出现。这可以通过序列化对象而不将其添加到列表来解决:

var json = JsonConvert.SerializeObject(new RegisterBindingModel {
    Email = email,
    Password = password,
    ConfirmPassword = confirmPassword
});

好的,您正在序列化一个列表,
[]
括号表示该列表。但是,看起来您只想直接序列化该项。我更新了我的问题,删除了列表并直接序列化了该对象。如果端点不需要实体列表,为什么要在序列化之前将模型添加到列表中?您的答案是可行的,但是有没有办法使用列表集合发送查询?@Dim如果服务器不接受集合,那么您就没有其他办法了。发送单个项目。@这取决于服务是否接受特定格式的请求。如果您修改在
http://localhost:49826/api/Account/Register
要接受数组,传递JSON数组就可以了。不过,目前看来该服务被编程为拒绝JSON数组。如果我想发送多个元素(多封电子邮件),该怎么办?我应该直接寄吗?不使用列表?@Dim据我所知,看起来你需要一个循环一个循环地发送它们。