نمایش نتایج 1 تا 8 از 8

نام تاپیک: چرا JsonConvert مقدار Property را تغییر میده؟

  1. #1
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,182

    چرا JsonConvert مقدار Property را تغییر میده؟

    سلام خدمت دوستان

    یک مقدار رشته ای بافرمت Json بصورت زیر دارم:


    {
    "value": {},
    "hasValue": false,
    "isSuccess": true,
    "isFail": false,
    "messages": [],
    "hasMessage": false
    }


    با استفاده از دستور زیر مقدار برگشتی را به مدل مورد نظر تبدیل می کنم:


    JsonConvert.DeserializeObject<Shared.ApiResponse<M ediatR.Unit>>(content);


    ولی نتیجه چیزدیگه ای شده و مقدار isSuccess شده false و مقدرا isFail شده true:
    Image.png

    علت این مغایرت چیه؟ ممنون میشم اگر راهنمایی کنید. تشکر

  2. #2
    کاربر دائمی آواتار fakhravari
    تاریخ عضویت
    دی 1388
    محل زندگی
    بوشهر
    سن
    34
    پست
    8,029

    نقل قول: چرا JsonConvert مقدار Property را تغییر میده؟

    تنظیمات حروف اول کوچک یا بزرگ شاید تاثیر داشته باشد. این مورد میشه در Program.cs تنظیم کرد

    https://json2csharp.com/

  3. #3
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,182

    نقل قول: چرا JsonConvert مقدار Property را تغییر میده؟

    کدهای کلاس ApiResponse بصورت زیر است:


    public class ApiResponse<T>
    {
    public ApiResponse()
    {
    _messages = new List<ApiResponseMessage>();
    }


    private T? _value;
    public T? Value
    {
    get { return _value; }
    set
    {
    _value = value;
    HasValue = !(value is null);
    IsSuccess = true;
    }
    }
    public bool HasValue { get; set; }


    private bool _isSuccess;
    public bool IsSuccess
    {
    get { return _isSuccess; }
    set
    {
    _isSuccess = true;
    _isFail = false;
    }
    }


    private bool _isFail;
    public bool IsFail
    {
    get { return _isFail; }
    set
    {
    _isFail = true;
    _isSuccess = false;
    }
    }


    private IList<ApiResponseMessage>? _messages;
    public IList<ApiResponseMessage> Messages
    {
    get { return _messages; }
    }
    public bool HasMessage { get; set; }




    #region Messages


    public void AddErrorMessage(Abstractions.Exceptions.CaspianExc eption caspianException)
    {
    _messages?.Add(new ApiResponseMessage
    {
    Type = nameof(ApiResponseMessageEnum.Error),
    Message = caspianException.Message,
    });


    HasMessage = true;
    IsFail = true;
    }


    public void AddWarningMessage(Abstractions.Exceptions.CaspianE xception caspianException)
    {
    _messages?.Add(new ApiResponseMessage
    {
    Type = nameof(ApiResponseMessageEnum.Warning),
    Message = caspianException.Message,
    });


    HasMessage = true;
    }




    public void AddDangerMessage(Abstractions.Exceptions.CaspianEx ception caspianException)
    {
    _messages?.Add(new ApiResponseMessage
    {
    Type = nameof(ApiResponseMessageEnum.Danger),
    Message = caspianException.Message,
    });


    HasMessage = true;
    }




    public void AddInformationMessage(Abstractions.Exceptions.Casp ianException caspianException)
    {
    _messages?.Add(new ApiResponseMessage
    {
    Type = nameof(ApiResponseMessageEnum.Information),
    Message = caspianException.Message,
    });


    HasMessage = true;
    }




    public void ClearMessages()
    {
    _messages?.Clear();
    HasMessage = false;
    }




    #endregion




    public class ApiResponseMessage
    {
    public string Type { get; set; } = string.Empty;
    public string Message { get; set; } = string.Empty;
    }


    public enum ApiResponseMessageEnum
    {
    Error,
    Warning,
    Danger,
    Information
    }
    }

  4. #4
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,182

    نقل قول: چرا JsonConvert مقدار Property را تغییر میده؟

    آنچه که از پاسخ در StackOverflow متوجه شدم Setterها ایراد داشتند. در نتیجه نسخه نهایی کلاس بصورت زیر شد:


    public class ApiResponse<T>
    {
    public ApiResponse()
    {
    _messages = new List<ApiResponseMessage>();
    }


    private T? _value;
    public T? Value
    {
    get { return _value; }
    set
    {
    _value = value;
    HasValue = !(value is null);
    IsSuccess = true;
    }
    }


    public bool HasValue { get; set; }


    private bool _isSuccess;
    public bool IsSuccess
    {
    get { return _isSuccess; }
    set
    {
    _isSuccess = value;


    if (value)
    HasError = false;
    }
    }


    private bool _hasError;
    public bool HasError
    {
    get { return _hasError; }
    set
    {
    _hasError = value;


    if (value)
    IsSuccess = false;
    }
    }


    private IList<ApiResponseMessage>? _messages;
    public IList<ApiResponseMessage> Messages
    {
    get { return _messages; }
    }
    public bool HasMessage { get; set; }




    #region Messages


    public void AddErrorMessage(Abstractions.Exceptions.CaspianExc eption caspianException)
    {
    _messages?.Add(new ApiResponseMessage
    {
    Type = nameof(ApiResponseMessageEnum.Error),
    Message = caspianException.Message,
    });


    HasMessage = true;
    HasError = true;
    }


    public void AddWarningMessage(Abstractions.Exceptions.CaspianE xception caspianException)
    {
    _messages?.Add(new ApiResponseMessage
    {
    Type = nameof(ApiResponseMessageEnum.Warning),
    Message = caspianException.Message,
    });


    HasMessage = true;
    }




    public void AddDangerMessage(Abstractions.Exceptions.CaspianEx ception caspianException)
    {
    _messages?.Add(new ApiResponseMessage
    {
    Type = nameof(ApiResponseMessageEnum.Danger),
    Message = caspianException.Message,
    });


    HasMessage = true;
    }




    public void AddInformationMessage(Abstractions.Exceptions.Casp ianException caspianException)
    {
    _messages?.Add(new ApiResponseMessage
    {
    Type = nameof(ApiResponseMessageEnum.Information),
    Message = caspianException.Message,
    });


    HasMessage = true;
    }




    public void ClearMessages()
    {
    _messages?.Clear();
    HasMessage = false;
    }




    #endregion




    public class ApiResponseMessage
    {
    public string Type { get; set; } = string.Empty;
    public string Message { get; set; } = string.Empty;
    }


    public enum ApiResponseMessageEnum
    {
    Error,
    Warning,
    Danger,
    Information
    }
    }

  5. #5
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,182

    نقل قول: چرا JsonConvert مقدار Property را تغییر میده؟

    از کلاس ApiResponse برای نوع برگشتی از تمامی Apiها استفاده میکنم.

  6. #6
    کاربر دائمی آواتار fakhravari
    تاریخ عضویت
    دی 1388
    محل زندگی
    بوشهر
    سن
    34
    پست
    8,029

    نقل قول: چرا JsonConvert مقدار Property را تغییر میده؟



    builder.Services.AddControllersWithViews()
    .AddJsonOptions(options =>
    {
    options.JsonSerializerOptions.PropertyNameCaseInse nsitive = true;
    options.JsonSerializerOptions.PropertyNamingPolicy = null;
    });


    builder.Services.AddControllersWithViews().AddNewt onsoftJson(options => { options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; });




  7. #7
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,182

    نقل قول: چرا JsonConvert مقدار Property را تغییر میده؟

    تشکر جناب فخرآوری. سوالم این بود که NameCaseSensitive برای Front کارها مهمه؟

  8. #8
    کاربر دائمی آواتار fakhravari
    تاریخ عضویت
    دی 1388
    محل زندگی
    بوشهر
    سن
    34
    پست
    8,029

    نقل قول: چرا JsonConvert مقدار Property را تغییر میده؟

    نقل قول نوشته شده توسط mmbguide مشاهده تاپیک
    تشکر جناب فخرآوری. سوالم این بود که NameCaseSensitive برای Front کارها مهمه؟
    اره. در هر زبانی یه مشکلاتی برای map کردن پیش میاد

تاپیک های مشابه

  1. سوال: تغییر property های کامپوننتهای هم کلاس در یک فرم به طور همزمان
    نوشته شده توسط iamehsan56 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 4
    آخرین پست: دوشنبه 07 بهمن 1392, 10:57 صبح
  2. تغییر property های یک یوزر کنترل در زمان اجرا
    نوشته شده توسط ras1364 در بخش C#‎‎
    پاسخ: 2
    آخرین پست: یک شنبه 12 خرداد 1392, 22:44 عصر
  3. تغییر property فرم
    نوشته شده توسط esmartiz_red در بخش C#‎‎
    پاسخ: 5
    آخرین پست: شنبه 22 تیر 1387, 13:04 عصر
  4. سوال: تغییر property چند کنترل در حلقه؟
    نوشته شده توسط padidar در بخش VB.NET
    پاسخ: 5
    آخرین پست: پنج شنبه 30 خرداد 1387, 09:10 صبح
  5. تغییر property نمودار رسم شده از طریق کد برنامه
    نوشته شده توسط mzamani در بخش گزارش سازی با Crystal Report
    پاسخ: 17
    آخرین پست: چهارشنبه 29 آذر 1385, 07:42 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •