แปลงสตริง JSON เป็นวัตถุ JSON c #


161

ฉันมีสตริงนี้เก็บอยู่ในฐานข้อมูลของฉัน:

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

สตริงนี้มีอยู่แล้วในรูปแบบ JSON แต่ฉันต้องการแปลงเป็น JObject หรือ JSON Object

JObject json = new JObject();

ฉันลองjson = (JObject)str;นักแสดง แต่มันไม่ทำงานดังนั้นฉันจะทำอย่างไร

คำตอบ:


298

JObjectกำหนดวิธีการParseนี้:

JObject json = JObject.Parse(str);

คุณอาจต้องการที่จะอ้างถึง Json.NET เอกสาร


5
สิ่งนี้จะแปลงเป็น {string} จะเพิ่มวงเล็บปีกกาพิเศษให้กับสตริงของคุณ
Vasil Valchev

62

หากคุณไม่ต้องการหรือต้องการลองพิมพ์วัตถุ:

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

หรือลองใช้วัตถุที่พิมพ์ลอง:

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

สิ่งนี้จะทำงานกับรายการ T หากสตริง json ที่เข้ามามีชุด: รายการ <Foo> json = JsonConvert.DeserializeObject <รายการ <Foo>> (str)
A. Varma

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));

เนมสเปซสำหรับ 'JavaScriptSerializer': System.Web.Script.Serialization;
BernieSF

ได้ผลแน่นอนสำหรับฉัน การใช้ JObject หลังจากแทนที่เครื่องหมายคำพูดคู่สำหรับคำพูดเดี่ยว ขอบคุณ !!!
Carlos Parra

System.Web.Script.Serialization ใช้ได้เฉพาะใน. NET Framework เต็มรูปแบบ
norgie

7

มีวิธีที่น่าสนใจที่จะบรรลุเป้าหมายอื่นซึ่งมีฐานประเภทคลาสที่แข็งแกร่งบน json ด้วยเครื่องมือที่มีประสิทธิภาพมากที่ฉันใช้ไม่กี่วันที่ผ่านมาเป็นครั้งแรกในการแปลผลการซื้อขาย json เป็นคลาส

เป็นเครื่องมือที่ง่าย: คัดลอกแหล่ง JSON ของคุณวางและในไม่กี่ครั้งที่สองคุณจะมี JSON ชั้นพิมพ์มั่นที่มุ่งเน้น ในลักษณะนี้คุณจะใช้คลาสเหล่านี้ซึ่งมีประสิทธิภาพยิ่งขึ้นและใช้งานง่าย

ฉันหวังว่าจะสามารถช่วยคุณได้


สิ่งที่ฉันต้องการ! ดังนั้นฉันไม่จำเป็นต้องกำหนดโครงสร้างคลาสที่ซับซ้อนจากสิ่งที่สร้างขึ้นใน javascript
NicolasZ

ในขณะนี้ไม่ตอบคำถาม นี่เป็นเครื่องมือประหยัดเวลาอันยิ่งใหญ่
Valamas



0

สิ่งนี้ใช้ไม่ได้ในกรณีที่ JObject ใช้งานได้กับข้อมูลรูปแบบ json อย่างง่าย ฉันได้ลองใช้ข้อมูลรูปแบบ json ด้านล่างเพื่อยกเลิกการคำนวณในรูปแบบ แต่ไม่ได้รับการตอบกลับ

สำหรับ Json นี้

{
  "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

หากสตริง JSon ของคุณมีเครื่องหมายคำพูดคู่ "" แทนที่จะเป็นเครื่องหมายคำพูดเดี่ยว "และมี \ n เป็นตัวบ่งชี้ของบรรทัดถัดไปคุณต้องลบออกเพราะนั่นไม่ใช่สตริง JSon ที่เหมาะสมตัวอย่างที่แสดงด้านล่าง:

            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.