programing

시스템을 캐스트 또는 변환할 수 없습니다.String to Class 객체

goodjava 2023. 2. 11. 09:23

시스템을 캐스트 또는 변환할 수 없습니다.String to Class 객체

웹 API에서 받은 JSON 문자열을 역직렬화하려고 합니다.

try
{
    string r = await App.client.GetUser();

    App.Authentication = JsonConvert.DeserializeObject<ApiResult>(r);

    await DisplayAlert("TEST", App.Authentication.ToString(), "OK");

    Application.Current.MainPage = new Schedule();
}
catch (Exception p)
{
    await DisplayAlert("Getting Authentication failed", p.ToString(), "TEST");
}

단, "Cannot Cast or Convert System" (시스템을 캐스트 또는 변환할 수 없습니다)라는 오류가 나타난다.App1에 대한 문자열.API Result(Api Result)App.Authentication = JsonConvert.DeserializeObject<ApiResult>(r);

App.인증:

public static ApiResult Authentication = new ApiResult();`

JSON 문자열:

"\"{\"상태\"\:\"0\",\"메시지\"\:{\"ID\":5,\"이름\"\:\"John\",\"성"\:\"Doe\",\"이메일\"\:\"testemail@gmail.com\",\"Password\",\"testPass\",\"CreationDate\",\"2016-10-26T15:01:08\",\"역할"ID \\:1,\"doorCode\:999}}"

ApiResult 클래스:

public class ApiResult
{
    public string status { get; set; }
    public Account message { get; set; }
}

계정 클래스:

public class Account
{
    public string status { get; set; }
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public DateTime CreationDate { get; set; }
    public int RoleID { get; set; }
    public int doorCode { get; set; }
}

전체 오류 메시지:

{"값 "{\"status\":\"0\","message\":{\"를 변환하는 중 오류가 발생했습니다.ID \:5, "First Name\":"John\", "Last Name\", "Doe\", "Email\":\"testemail@gmail.com\",\"비밀번호\":"test Pass", "Creation Date" :"2016-10-26T15:01:08\", "역할"ID\:1,"doorCode\":9999}"를 입력하고 App1을 입력합니다.ApiResult'를 클릭합니다.경로 1, 위치 232"}

수신한 json은 2회 시리얼화되어 있는 것 같습니다.처음부터ApiResult로.string, 그 후 ~로string다시:

"\"{\\"status\\":\\"0\\",\\"message\\":...

첫 번째 큰 따옴표는 디버거에 의해 추가될 수 있지만 두 번째 따옴표는 이스케이프됩니다.\"1) 실제로 처리 중인 데이터의 일부인 것 같습니다.이 에러 메세지는, 이 방법으로도 의미가 있습니다.이것에 의해, 디시리얼라이즈 됩니다.string그런 다음, 그것을 다른 사람에게 던지려고 시도합니다.ApiResult.

데이터를 문자열로 역직렬화한 다음 결과를 역직렬화해 보십시오.ApiResult이 경우 서버 코드를 변경해야 합니다.

아래 코드는 C에 대해 나에게 효과가 있었다.예벤후이가 대답해요.

   var content = response.Content;              
   var jsonResult = JsonConvert.DeserializeObject(content).ToString();
   var result= JsonConvert.DeserializeObject<Model>(jsonResult);

여기서의 내용은 - "\"{\"Id\":\"92209\",\"operatorId\":100000,\"Status\"와 유사합니다.참, .....

앱을 사용해 보세요.인증 = JObject.해석(요구).내용.ReadAsStringAsync() 입니다.결과);

데이터 모델,

   var r = new ApiResult
            {
                status = "0",
                message = new Account()
                {
                    status = "0",
                    CreationDate = DateTime.Now,
                    Email = "foo@foo.com",
                    FirstName = "Trump",
                    ID = 1,
                    LastName = "Fck",
                    Password = "111",
                    RoleID = 1,
                    doorCode = 222
                }
            };


var jsonResult = Newtonsoft.Json.JsonConvert.SerializeObject(r);

var apiObject = Newtonsoft.Json.JsonConvert.DeserializeObject<ApiResult>(jsonResult);

json 결과:

여기에 이미지 설명 입력

App.client를 참조하십시오.Get User();

언급URL : https://stackoverflow.com/questions/40804648/could-not-cast-or-convert-system-string-to-class-object