JSON স্ট্রিংটিকে JSON অবজেক্ট সি # তে রূপান্তর করুন


161

আমার কাছে এই স্ট্রিংটি আমার ডাটাবেসে সঞ্চিত আছে:

str = "{ "context_name": { "lower_bound": "value", "upper_bound": "value", "values": [ "value1", "valueN" ] } }"

এই স্ট্রিংটি ইতিমধ্যে JSON ফর্ম্যাটে রয়েছে তবে আমি এটিকে JObject বা JSON অবজেক্টে রূপান্তর করতে চাই।

JObject json = new JObject();

আমি json = (JObject)str;কাস্ট চেষ্টা করেছিলাম কিন্তু এটি কাজ করে না তাই আমি এটি কীভাবে করব?

উত্তর:


298

JObjectএর Parseজন্য পদ্ধতিটি নির্ধারণ করে :

JObject json = JObject.Parse(str);

আপনি Json.NET ডকুমেন্টেশন উল্লেখ করতে চাইতে পারেন ।


5
এটি {স্ট্রিং} তে রূপান্তরিত হবে, আপনার স্ট্রিংয়ে অতিরিক্ত কোঁকড়ানো বন্ধনী যুক্ত করবে।
ভাসিল ভালচেভ

62

আপনি যদি না চান বা কোনও টাইপ করা বস্তুর প্রয়োজন হয় তবে চেষ্টা করুন:

using Newtonsoft.Json;
// ...   
dynamic json  = JsonConvert.DeserializeObject(str);

বা একটি টাইপ করা বস্তুর চেষ্টা করে দেখুন:

Foo json  = JsonConvert.DeserializeObject<Foo>(str)

এটি আগত জসন স্ট্রিংয়ের কোনও সংগ্রহ থাকলে টিয়ের তালিকার সাথেও কাজ করবে: তালিকা <Foo> json = JsonConvers.DerializeObject <list <Foo>> (str)
A. ভার্মা

22

এইটা কাজ করে

    string str = "{ 'context_name': { 'lower_bound': 'value', 'pper_bound': 'value', 'values': [ 'value1', 'valueN' ] } }";
    JavaScriptSerializer j = new JavaScriptSerializer();
    object a = j.Deserialize(str, typeof(object));

'জাভাস্ক্রিপ্টসরিয়ালাইজার' এর নামস্থান: সিস্টেম. ওয়েবে.সক্রিপ্ট।
বার্নিএসএফ

অবশ্যই আমার জন্য কাজ করেছেন। একক উদ্ধৃতিতে ডাবল উদ্ধৃতি প্রতিস্থাপনের পরে জোবজেক্ট ব্যবহার করে কৌতুকটি করলেন। ধন্যবাদ !!!
কার্লোস পাররা

System.Web.Script.Serialization কেবলমাত্র নেট নেট ফ্রেমওয়ার্কে উপলভ্য।
নর্জি

7

আরও একটি লক্ষ্য অর্জনের একটি আকর্ষণীয় উপায় রয়েছে যা জাসনের উপর একটি শক্তিশালী ধরণের শ্রেণির বেস রয়েছে যা খুব শক্তিশালী সরঞ্জাম যা আমি কয়েকদিন আগে প্রথমবারের জন্য ট্রেডডুবলার জেসন ফলাফলকে ক্লাসে অনুবাদ করার জন্য ব্যবহার করেছি

একটি সাধারণ সরঞ্জাম: আপনার জসন উত্সের পেস্টটি অনুলিপি করুন এবং কয়েক সেকেন্ডের মধ্যে আপনার কাছে দৃ strongly়ভাবে টাইপ করা ক্লাস জেসন ওরিয়েন্টেড হবে । এই পদ্ধতিতে আপনি এই ক্লাসগুলি ব্যবহার করবেন যা আরও শক্তিশালী এবং সহজভাবে ব্যবহারযোগ্য।

আমি আপনাকে সাহায্য করতে পারে আশা করি


ঠিক যেটা আমার দরকার ছিল! সুতরাং আমাকে জাভাস্ক্রিপ্টে তৈরি হওয়া কোনও জটিল শ্রেণির কাঠামো সংজ্ঞায়িত করতে হবে না
নিকোলাসজেড

যদিও এই প্রশ্নের উত্তর দেয় না। এটি একটি বিশাল সময় সাশ্রয়কারী সরঞ্জাম।
ভালামাস


1

এটি আমার ব্যবহার করে কাজ করে JsonConvert

var result = JsonConvert.DeserializeObject<Class>(responseString);

0

এটি JObject এর ক্ষেত্রে কাজ করে না এটি সাধারণ জসন ফর্ম্যাট ডেটার জন্য কাজ করে। টাইপটি ডিজাইরিয়ালাইজ করতে আমি নীচের জসন ফর্ম্যাট ডেটার আমার ডেটা চেষ্টা করেছি কিন্তু সাড়া পাইনি।

এই জসনের জন্য

{
  "Customer": {
    "id": "Shell",
    "Installations": [
      {
        "id": "Shell.Bangalore",
        "Stations": [
          {
            "id": "Shell.Bangalore.BTM",
            "Pumps": [
              {
                "id": "Shell.Bangalore.BTM.pump1"
              },
              {
                "id": "Shell.Bangalore.BTM.pump2"
              },
              {
                "id": "Shell.Bangalore.BTM.pump3"
              }
            ]
          },
          {
            "id": "Shell.Bangalore.Madiwala",
            "Pumps": [
              {
                "id": "Shell.Bangalore.Madiwala.pump4"
              },
              {
                "id": "Shell.Bangalore.Madiwala.pump5"
              }
            ]
          }
        ]
      }
    ]
  }
}

0

যদি আপনার জেএসন স্ট্রিংয়ের একক উদ্ধৃতি'র পরিবর্তে "" দ্বিগুণ উদ্ধৃতি রয়েছে এবং পরের লাইনের সূচক হিসাবে has n থাকে তবে আপনাকে এটি সরিয়ে ফেলতে হবে কারণ এটি কোনও উপযুক্ত জেএসন স্ট্রিং নয়, উদাহরণস্বরূপ নীচে দেখানো হয়েছে:

            SomeClass dna = new SomeClass ();
            string response = wc.DownloadString(url);
            string strRemSlash = response.Replace("\"", "\'");
            string strRemNline = strRemSlash.Replace("\n", " ");
            // Time to desrialize it to convert it into an object class.
            dna = JsonConvert.DeserializeObject<SomeClass>(@strRemNline);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.