Mengonversi String JSON ke Objek JSON c #


161

Saya menyimpan String ini di basis data saya:

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

String ini sudah dalam format JSON tetapi saya ingin mengonversinya menjadi Objek JObject atau JSON.

JObject json = new JObject();

Saya mencoba para json = (JObject)str;pemain tetapi tidak berhasil jadi bagaimana saya bisa melakukannya?

Jawaban:


298

JObjectmendefinisikan metode Parseuntuk ini:

JObject json = JObject.Parse(str);

Anda mungkin ingin merujuk ke dokumentasi Json.NET .


5
Ini akan dikonversi menjadi {string}, akan menambahkan kurung keriting tambahan ke string Anda.
Vasil Valchev

62

jika Anda tidak ingin atau memerlukan objek yang diketik coba:

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

atau coba untuk objek yang diketik coba:

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

Ini juga akan berfungsi dengan daftar T jika string json yang masuk berisi koleksi: Daftar <Foo> json = JsonConvert.DeserializeObject <List <Foo>> (str)
A. Varma

22

Ini bekerja

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

namespace untuk 'JavaScriptSerializer': System.Web.Script.Serialization;
BernieSF

Pasti bekerja untuk saya. Menggunakan JObject setelah mengganti penawaran ganda untuk penawaran tunggal, berhasil. Terima kasih!!!
Carlos Parra

System.Web.Script.Serialisasi hanya tersedia dalam kerangka penuh .Net.
norgie

7

ada cara yang menarik untuk mencapai tujuan lain yaitu memiliki basis kelas tipe json yang kuat dengan alat yang sangat kuat yang saya gunakan beberapa hari yang lalu untuk pertama kalinya menerjemahkan hasil jou yang diperdagangkan ke dalam kelas

Adalah alat sederhana: salin tempel sumber json Anda dan dalam beberapa detik Anda akan memiliki orientasi json kelas yang sangat diketik . Dengan cara ini Anda akan menggunakan kelas-kelas ini yang lebih kuat dan mudah digunakan.

Saya harap itu dapat membantu Anda


Apa yang saya butuhkan! jadi saya tidak perlu mendefinisikan struktur kelas yang kompleks dari sesuatu yang dibuat dalam javascript
NicolasZ

sementara ini tidak menjawab pertanyaan. ini adalah alat penghemat waktu yang sangat besar.
Valamas

7

Anda dapat mencoba seperti berikut:

string output = JsonConvert.SerializeObject(jsonStr);

1

Ini berfungsi untuk saya gunakan JsonConvert

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

0

Ini tidak berfungsi jika JObject ini berfungsi untuk data format json sederhana. Saya telah mencoba data saya dari data format json di bawah ini untuk deserialize dalam jenis tetapi tidak mendapatkan respons.

Untuk Json ini

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

Jika string JSon Anda "" memiliki kuotasi ganda, bukan kuotasi tunggal 'dan memiliki \ n sebagai indikator dari baris berikutnya, maka Anda perlu menghapusnya karena itu bukan string JSon yang tepat, contoh seperti yang ditunjukkan di bawah ini:

            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);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.