从response.Content.ReadAsStringAsync()中恢复对象

我有一个通过API发送的Json对象列表:

    {
  "Pr": {
    "ClientProfil": {
      "IdClient": 67,"FirmName": null,"NumMember": "OPTOO111","FirstName": "EL MONAGI","LastName": "ABDELJALIL","Email": "jalil_monagi@yahoofr","Adress": "7795 10eme avenue","City": "Montréal","Province": "QC","Country": "CA","Postalcode": "H2A3B3","Tel": "438 995 6475","PreferredLanguage": "fr"
    },"Programm": {
      "IdProgramm": 9,"Designation": "OPTO","CreationDate": "2020-01-01T00:00:00","SuppressionDate": null,"RenewDate": "2021-01-04T00:00:00","StartDate": null,"IsRenewDate": true
    }
}

在前台,我使用下面的代码

public async Task<actionResult> Authentificate(formcollection form)
    {
        HttpClient client = autentificate();

        string userCodePwd = form["fCode"].ToString() + ":" + form["lPwd"].ToString();
        userCodePwd = Convert.ToBase64String(Encoding.Default.GetBytes(userCodePwd));

        //var decodedAuthenticationToken = Encoding.UTF8.GetString(Convert.FromBase64String(userCodePwd));
        
        HttpResponseMessage response = client.Getasync("api/Login/FindPolice?userCodePasswordarray=" + userCodePwd).Result;

        try
        {
            if (response.IsSuccessStatusCode)
            {
                string Result = await response.Content.ReadAsStringAsync();

                JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
                dynamic dobj = jsonSerializer.Deserialize<dynamic>(Result);

                int StatusCode = (int)response.StatusCode;
                if (StatusCode==200) //  Existe une assurance pour le client
                {
                    int StatusRequest = dobj["StatusRequest"];
                    if (StatusRequest==1001)
                    {
                        int IdProgram = dobj["IdProgram"];
                        RootAQII.Profil= JsonConvert.DeserializeObject<Profil>(dobj["Pr"].ToString());

                        RootAQII.Programm= JsonConvert.DeserializeObject<List<Programm>>(dobj["Programm"].ToString());
                        
                                                    if (IdProgram==9)
                        {
                            return RedirectToaction("Index","OPTO");
                        }
                    }
                }
            }
            else
            {

            }
        }
        catch (Exception e)
        {
            String message = e.Message;
        }

        return View();
    }

问题是当我尝试解析RootOPTOASSURED.Profil的响应结果

我收到此消息错误:

解析值s时遇到

意外字符。路径'',线 0,位置0。

有人有什么主意,谢谢你:)

elai30 回答:从response.Content.ReadAsStringAsync()中恢复对象

假设Result是上面的json字符串,一行

int IdProgram = dobj [“ IdProgram”];

应该失败,因为dobj的唯一元素应该是dobj [“ PR”]

此外,您还尝试从单个JSON条目反序列化Programm条目的列表。如果Programm应该是列表,则应显示在[]

{
    "Pr": {
        "ClientProfil": {
            "IdClient": 67,"FirmName": null,"NumMember": "OPTOO111","FirstName": "EL MONAGI","LastName": "ABDELJALIL","Email": "jalil_monagi@yahoofr","Adress": "7795 10eme avenue","City": "Montréal","Province": "QC","Country": "CA","Postalcode": "H2A3B3","Tel": "438 995 6475","PreferredLanguage": "fr"
        },"Programm": 
        [
            {
                "IdProgramm": 9,"Designation": "OPTO","CreationDate": "2020-01-01T00:00:00","SuppressionDate": null,"RenewDate": "2021-01-04T00:00:00","StartDate": null,"IsRenewDate": true
            }
        ]
    }
}

要么更改行,要么

RootAQII.Programm= JsonConvert.DeserializeObject<List<Programm>>(dobj["Programm"].ToString());
                    

RootAQII.Programm= JsonConvert.DeserializeObject<Programm>(dobj["Programm"].ToString());
                    

我在rextester

上做了一个例子
本文链接:https://www.f2er.com/1258805.html

大家都在问