JSON文字列をJSONオブジェクトに変換するc#


161

私のデータベースにはこの文字列が保存されています:

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

この文字列はすでにJSON形式ですが、JObjectまたはJSONオブジェクトに変換したいと思います。

JObject json = new JObject();

json = (JObject)str;キャストを試しましたがうまくいきませんでした。

回答:



62

型付きオブジェクトが必要ない、または必要ない場合は、以下を試してください。

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

または、型指定されたオブジェクトを試す:

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

着信json文字列にコレクションが含まれている場合、これはTのリストでも機能します。List <Foo> json = JsonConvert.DeserializeObject <List <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 2018年

間違いなく私のために働きました。二重引用符を一重引用符に置き換えた後にJObjectを使用して、トリックを行いました。ありがとう!!!
Carlos Parra

System.Web.Script.Serializationは、.Netフルフレームワークでのみ使用できます。
Norgie

7

別の目標を達成する興味深い方法があります。それは、jsonを強く型付けしたクラスをベースに、非常に強力なツールを使用して、tradedoubler jsonの結果をクラスに変換するために初めて使用した非常に強力なツールです

単純なツールです。jsonソースペーストをコピーすると、数秒で強く型付けされたクラスjson指向のクラスになります。このようにして、これらのクラスを使用します。これらのクラスは、より強力で、簡単に使用できます。

お役に立てれば幸いです


ちょうど私が必要なもの!だから私はJavaScriptで作成されたものから複雑なクラス構造を定義する必要はありません
NicolasZ

これは質問に答えません。これは大規模な時間節約ツールです。
Valamas


1

これは私が使用して動作します JsonConvert

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

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.