0

次のように JSON オブジェクトをデシリアライズしたいと思います。

[{"Response":"OK","UUID":"89172"},{"Response":"OK","UUID":"10304"}]

Responseとを格納する変数を持つカスタム クラスに変換しますUUID。ただし、上記の例のように、複数のデータ応答を逆シリアル化したいと思います。ForEachそれに応じてデータをポップアウトできるような方法を使用できれば素晴らしいことです。誰でもアドバイスできますか?どうもありがとう!

4

4 に答える 4

3

このクラスを書く

public class MyClass
{
   public string Response { get; set; }
   public string UUID { get; set; }
}

次に、ライブラリnewtonsoft.jsonを使用してデシリアライズできます

string jsonString = "[{"Response":"OK","UUID":"89172"},{"Response":"OK","UUID":"10304"}]";
...
...
var myListOfItems= JsonConvert.DeserializeObject<List<MyClass>>(jsonString);

foreach(var item in myListOfItems)
{
   ....
}

コンソール アプリケーションの完全なコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;

namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        string jsonString = "[{'Response':'OK','UUID':'89172'},{'Response':'OK','UUID':'10304'}]";

        var items= JsonConvert.DeserializeObject<List<MyClass>>(jsonString);

        foreach (var item in items)
        {
            Console.WriteLine("UUUID: "+item.UUID);
            Console.WriteLine("Response: " + item.Response);
            Console.WriteLine();
        }

        Console.ReadKey();
    }
}

public class MyClass
 {
    public string Response { get; set; }
    public string UUID { get; set; }
 }
}
于 2013-05-15T07:09:41.267 に答える
0

これを機能させるには、Newtonsoft.Json ライブラリが必要です。

public class A
{
    public string Response { get; set; }
    public string UUID { get; set; }
}

static void Main(string[] args)
{
    var json = "[{\"Response\":\"OK\",\"UUID\":\"89172\"}, \"Response\":\"OK\",\"UUID\":\"10304\"}]";
    var result = JsonConvert.DeserializeObject<IEnumerable<A>>(json);
    foreach (var a in result)
        Console.WriteLine("Response: {0} UUID: {1}", a.Response, a.UUID);
    Console.ReadKey();
}
于 2013-05-15T07:14:02.983 に答える
0

そのためにJson.Netを使用します。「JSON のシリアライズとデシリアライズ」セクションのJson.Net ヘルプを参照してください。

そこで、json-string をオブジェクトにデシリアライズする方法を示します。

于 2013-05-15T07:02:00.167 に答える