web-dev-qa-db-ja.com

JSON応答を解析する最も簡単な方法

C#でJSon以下を解析する簡単な方法はありますか

{"type":"text","totalprice":"0.0045","totalgsm":"1","remaincredit":"44.92293","messages": [
{"status":"1","messageid":"234011120530636881","gsm":"923122699633"}
]}

および場合複数の結果。

32
user788592

次の手順を実行します:

  1. json2csharp.com ;を使用してJSONをC#に変換します。
  2. クラスファイルを作成し、上記の生成されたコードをそこに配置します。
  3. Nuget Package Managerを使用して、プロジェクトにNewtonsoft.Jsonライブラリを追加します。
  4. このコードを使用して、サービスから受け取ったJSONを変換します。

     RootObject r = JsonConvert.DeserializeObject<RootObject>(json);
    

RootObjectの名前を自由に変更して、自分にとって意味のある名前に変更してください。他のクラスは変更しないでください。)

56
Patrick Hofman

追加のサードパーティライブラリを参照せずに、組み込みのJavaScriptSerializerを安全に使用できます。

var ser = new System.Web.Script.Serialization.JavaScriptSerializer();
ser.DeserializeObject(json);
21
Łukasz Trzewik

外部APIを使用せずに取得する方法を見つけました

        using (var w = new WebClient())
        {
            var json_data = string.Empty;
            string url = "YOUR URL";
            // attempt to download JSON data as a string
            try
            {
                json_data = w.DownloadString(url);
                JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
                var result = jsSerializer.DeserializeObject(json_data);
                Dictionary<string, object> obj2 = new Dictionary<string, object>();
                obj2=(Dictionary<string,object>)(result);

                string val=obj2["KEYNAME"].ToString();
            }
            catch (Exception) { }
            // if string with JSON data is not empty, deserialize it to class and return its instance 
        }
5
Ashish

私にとって...それを行う最も簡単な方法は、JSON.netを使用して、オブジェクトを表すエンティティへの逆シリアル化を行うことです。次に例を示します。

public class Message
{
    public string status { get; set; }
    public string messageid { get; set; }
    public string gsm { get; set; }
}

public class YourRootEntity
{
    public string type { get; set; }
    public string totalprice { get; set; }
    public string totalgsm { get; set; }
    public string remaincredit { get; set; }
    public List<Message> messages { get; set; }
}

そしてこれを行います:

YourRootEntity data JsonConvert.DeserializeObject<YourRootEntity>(jsonStrong);
1
SergioZgz