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

نام تاپیک: بدست آوردن مقادیر یک داده جیسون

  1. #1

    بدست آوردن مقادیر یک داده جیسون

    سلام

    من از ویو یک داده جیسون به سمت اکشن متد ارسال میکنم بصورت زیر :

    [HttpPost]
    public IActionResult Index([FromBody]object jsondata)
    {


    jsondata شامل فیلدهای مختلفی هست مثلا بصورت زیر :


    {{
    "field1": [
    "test1"
    ],
    "field2": [
    {"id":1,"Name":"test3"},
    {"id":2,"Name":"test4"},

    ],
    "field3": "<p>ff</p>\n"
    }}


    من چطور میتونم به داده های هر آیتم دسترسی داشته باشم ؟
    از روش زیر استفاده کردم که بنظرم روش مناسبی نیست مخصوصا که نوع آبجکت رو به رشته تبدیل میشه و بعد هر آیتم رو بصورت ارایه برمیگردونه .

    dynamic results = JsonConvert.DeserializeObject<object>(jsondata.ToS  tring());
    var fname= results.field1[0];


  2. #2

    نقل قول: بدست آوردن مقادیر یک داده جیسون

    دقیقا باید از همون متد استفاده کنین منتها برای ساده شدن دسترسی به مقادیر، شما باید یه کلاس مدل درست کنین و پراپرتی های مورد نیاز رو در اون کلاس تعریف کنین، بعدش متد DeserializeObject رو از نوع کلاستون میگیرید، مثال:
    public class SomeModel
    {
    public string field1 { get; set; }
    public List<Person> field2 { get; set; }
    public string field3 { get; set; }
    }

    public class Person
    {
    public int Id { get; set; }
    public string Name { get; set; }
    }

    و به این شکل داده هارو میخونین:
    var results = JsonConvert.DeserializeObject<SomeModel>(jsondata.  ToString());
    fname = results.field1;
    tag = results.field3;
    Id = results.field2[0].Id;


  3. #3

    نقل قول: بدست آوردن مقادیر یک داده جیسون

    ممنون . میشه کاری کرد که field2 از نوع لیست نباشه ؟ و در واقع همون کلاس رو بپذیره ؟
    تو این حالت برای پاس دادن داده ها باید هر کدوم رو دوباره به یه کلاس پاس بدیم که درسته ؟ از mapper هم به دلیل متفاوت بودن نوعشون نمیتونیم استفاده کنیم .


    Product model = new Product()
    {
    Title = results.field2[0].Title,
    UserId=results.field2[0].UserId,
    //DateProduct = DateTime.Now,
    };


  4. #4

    نقل قول: بدست آوردن مقادیر یک داده جیسون

    اگه fiel2 چند مقداری باشه، یعنی آرایه ای از Id و Name ها باشه، خیر نمیشه از آبجکتی از کلاس استفاده کرد و حتما باید لیست باشه، دقیقا مثالی از داده هایی که خودتون گذاشتین:
    "field2": [{"id":1,"Name":"test3"},
    {"id":2,"Name":"test4"},

    ],

    الان این field2 آرایه ای هست پس باید حتما لیست باشه، اما اگه یقین دارین که جیسانی که بهتون برگشت داده میشه field2 تنها شامل یک Id و یک Name هست، در این حالت میتونین از آبجکتی از کلاس مثلا person استفاده کنین

    برای پاس دادن اطلاعات هم شما میتونین از linq استفاده کنین، برای مثال:
    var productsList = results.field2.Select(s => new Product
    {
    Title = s.Title,
    UserId = s.UserId,
    ProductDate = DateTime.Now
    });
    برای mapper چون بنده با mapper ها کار نکردم دقیق نمیدونم، اما احتمال میدم باید بصورت دستی براش تعریف کنین که چه فیلدی رو به کدوم نسبت بده

  5. #5

    نقل قول: بدست آوردن مقادیر یک داده جیسون

    برای پاس دادن اطلاعات هم شما میتونین از linq استفاده کنین، برای مثال:

    var productsList = results.field2.Select(s => new Product
    {
    Title = s.Title,
    UserId = s.UserId,
    ProductDate = DateTime.Now
    });
    [/QUOTE]
    بسیار ممنون
    در این حالت آیا فرقی هم میکنه که من از product بصورت مستقیم new کنم ؟ یا اینکه باید ابتدا یک ویو مدل بسازم و داده ها رو به ویومدل پاس بدم ؟

  6. #6

    نقل قول: بدست آوردن مقادیر یک داده جیسون

    شما هم میتونین یه ویومدل بسازین و هم اینکه از anonymous تایپ ها استفاده کنین...
    استفاده از ویومدل که مشخصه، اما برای استفاده از anonymous تایپ ها توی قسمت new کردن نباید اسم هیچ کلاسی رو ذکر کنین، به این شکل:
    var productsList = results.field2.Select(s => new 
    {
    Title = s.Title,
    UserId = s.UserId,
    ProductDate = DateTime.Now
    });




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

  1. بدست اوردن مقادیر یک textarea شکل دهی شده با CKEditor
    نوشته شده توسط Black_Hammer در بخش jQuery
    پاسخ: 1
    آخرین پست: دوشنبه 07 فروردین 1396, 22:12 عصر
  2. سوال: بدست آوردن مقادیر چند داده از داخل html یک صفحه
    نوشته شده توسط momomomo در بخش C#‎‎
    پاسخ: 1
    آخرین پست: دوشنبه 15 فروردین 1390, 13:19 عصر
  3. سوال: بدست آوردن ليست پايگاه داده هاي موجود در يك سيستم
    نوشته شده توسط hadisadaghatmehr در بخش C#‎‎
    پاسخ: 1
    آخرین پست: یک شنبه 02 آبان 1389, 13:36 عصر
  4. سوال: بدست آوردن مقادیر یک Row در یک دیتاگرید هنگام انتخاب کاربر
    نوشته شده توسط dark-man در بخش C#‎‎
    پاسخ: 10
    آخرین پست: سه شنبه 05 آذر 1387, 12:52 عصر
  5. بدست آوردن مقادیر ویژه یک ماتریس؟
    نوشته شده توسط امیر-نا در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 2
    آخرین پست: شنبه 21 شهریور 1383, 19:12 عصر

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

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