10

Visual .NET で JSON 文字列を C# オブジェクトに解析する方法がわかりません。タスクは非常に簡単ですが、まだ道に迷っています...次の文字列を取得します。

{"single_token":"842269070","username":"example123","version":1.1}

そして、これは私が脱滅菌しようとするコードです:

namespace _SampleProject
{
    public partial class Downloader : Form
    {
        public Downloader(string url, bool showTags = false)
        {
            InitializeComponent();
            WebClient client = new WebClient();
            string jsonURL = "http://localhost/jev";   
            source = client.DownloadString(jsonURL);
            richTextBox1.Text = source;
            JavaScriptSerializer parser = new JavaScriptSerializer();
            parser.Deserialize<???>(source);
        }

「<」と「>」の間に何を入れたらよいかわかりません。オンラインで読んだことから、新しいクラスを作成する必要があります..? また、出力を取得するにはどうすればよいですか?例が役に立ちます!

4

7 に答える 7

9

次のように、JSON を逆シリアル化できる新しいクラスを作成します。

public class UserInfo
{
    public string single_token { get; set; }
    public string username { get; set; }
    public string version { get; set; }
}

public partial class Downloader : Form
{
    public Downloader(string url, bool showTags = false)
    {
        InitializeComponent();
        WebClient client = new WebClient();
        string jsonURL = "http://localhost/jev";
        source = client.DownloadString(jsonURL);
        richTextBox1.Text = source;
        JavaScriptSerializer parser = new JavaScriptSerializer();
        var info = parser.Deserialize<UserInfo>(source);

        // use deserialized info object
    }
}
于 2012-05-03T13:49:48.940 に答える
7

.NET 4 を使用している場合は、動的データ型を使用してください。

http://msdn.microsoft.com/en-us/library/dd264736.aspx

string json = "{ single_token:'842269070', username: 'example123', version:1.1}";

     JavaScriptSerializer jss = new JavaScriptSerializer();

     dynamic obj = jss.Deserialize<dynamic>(json);

     Response.Write(obj["single_token"]);
     Response.Write(obj["username"]);
     Response.Write(obj["version"]); 
于 2012-05-03T13:47:30.860 に答える
2

はい、JSON と一致するプロパティを持つ新しいクラスが必要です。

MyNewClass result = parser.Deserialize<MyNewClass>(source);
于 2012-05-03T13:43:06.703 に答える
2

通常の方法は、逆シリアル化するオブジェクトを記述するクラス (または、より複雑な JSON 文字列の場合は一連のクラス) を作成し、それをジェネリック パラメーターとして使用することです。

もう 1 つのオプションは、JSON を次のように逆シリアル化することDictionary<string, object>です。

parser.Deserialize<Dictionary<string, object>>(source);

この方法でデータにアクセスできますが、必要がない限り、これを行うことはお勧めしません。

于 2012-05-03T13:54:08.013 に答える
1

取得している JSON と一致するクラスが必要です。値が入力されたそのクラスの新しいオブジェクトが返されます。

于 2012-05-03T13:44:07.133 に答える
0
dynamic data = JObject.Parse(jsString);
var value= data["value"];
于 2018-05-10T23:27:13.800 に答える