Вопрос по c#, json, .net, visual-studio – Разбор json объектов

10

У меня возникли проблемы с пониманием того, как анализировать строку JSON в объектах c # с помощью Visual .NET. Задача очень проста, но я все еще проиграл ... Я получаю эту строку:

<code>{"single_token":"842269070","username":"example123","version":1.1}
</code>

И это код, где я пытаюсь стерилизовать:

<code>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);
        }
</code>

Я не знаю, что ставить между "& lt;" и "& gt;", и из того, что я прочитал в Интернете, я должен создать для него новый класс ...? Кроме того, как я могу получить вывод? Пример будет полезен!

Кстати, JSON, скорее всего, не так. Я сомневаюсьversionError: User Rate Limit Exceeded svick

Ваш Ответ

7   ответов
0
dynamic data = JObject.Parse(jsString);
var value= data["value"];
7

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"]); 
Error: User Rate Limit ExceededDeserialize<dynamic>(source)Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededstackoverflow.com/questions/3142495/…Error: User Rate Limit Exceeded
2

вам нужен новый класс со свойствами, которые будут соответствовать вашему JSON.

MyNewClass result = parser.Deserialize<MyNewClass>(source);
0

ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);

        request = WebRequest.Create("https://myipaddress/api/admin/configuration/v1/conference/1/");

        request.Credentials = new NetworkCredential("admin", "admin123");
        // Create POST data and convert it to a byte array.
        request.Method = "GET";          

                // Set the ContentType property of the WebRequest.
        request.ContentType = "application/json; charset=utf-8";          


        WebResponse response = request.GetResponse();
        // Display the status.
        Console.WriteLine(((HttpWebResponse)response).StatusDescription);
        // Get the stream containing content returned by the server.
        dataStream = response.GetResponseStream();
        // O,pen the stream using a StreamReader for easy access.
        StreamReader reader = new StreamReader(dataStream);
        // Read the content.
        string responseFromServer = reader.ReadToEnd();
        JavaScriptSerializer js = new JavaScriptSerializer();
        var obj = js.Deserialize<dynamic>(responseFromServer);
        Label1.Text = obj["name"];
        // Display the content.
        Console.WriteLine(responseFromServer);
        // Clean up the streams.
        reader.Close();
        dataStream.Close();
        response.Close();
2

ожных строк JSON), который описывает объект, который вы хотите десериализовать, и использовать его в качестве универсального параметра.

Другим вариантом является десериализация JSON вDictionary<string, object>:

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

Таким образом, вы можете получить доступ к данным, но я бы не советовал вам делать это, если вам не нужно.

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
    }
}
1

который соответствует JSON, который вы получаете, и он вернет новый объект этого класса с заполненными значениями.

Похожие вопросы