Как прочитать значение из JSON, который является строкой - PullRequest
0 голосов
/ 05 июня 2018

У меня есть вопрос.Я пытаюсь получить значение из JSON.JSON были отправлены с сервера через сокет.В клиенте у меня есть что-то вроде этого:

            string data = null;
            // Receive the response from the remote device.  
            int bytesRec = sender.Receive(bytes);
            data += Encoding.ASCII.GetString(bytes, 0, bytesRec);
            Console.WriteLine(data);
            Console.ReadLine();

И в консоли я вижу:

{"player":0, "size":3}

Как я могу получить значение из этой строки?

Ответы [ 4 ]

0 голосов
/ 05 июня 2018

Добавьте пакет Nuget для JSON.net:

В диспетчере пакетов Nuget найдите «Newtonsoft.Json».

Или используйте консоль:

Install-Package Newtonsoft.Json

После установки вы можете использовать следующий код для анонимного типа:

using Newtonsoft.Json;

var anonymousTypeDefinition = new { player = -1, size = -1 };
var player = JsonConvert.DeserializeAnonymousType(data, anonymousTypeDefinition);

Или вы можете использовать следующий код для строгого типа:

public class Player
{
    int Size { get; set; }
    int Player { get; set; }
}

// in the console
var player = Newtonsoft.Json.JsonConvert.DeserializeObject<Player>(data);
0 голосов
/ 05 июня 2018

Вы можете создать класс:

public class MyObject
{
    public int Player {get; set;}
    public int Size {get; set;}
} 

и затем десериализовать строку JSON, используя что-то вроде JSON.NET:

MyClass myClassObject = JsonConvert.DeserializeObject<MyClass>(data);
var playerId = myClassObject.Player;
0 голосов
/ 05 июня 2018
  1. Создайте класс для этого JSON.

Самый простой способ сделать это - использовать Visual Studio: скопируйте текст JSON в буфер обмена и выберите Edit | Paste Special | Paste JSON as classes.Переименуйте класс по желанию (для этого примера назовите его Demo).

Добавьте в свой проект ссылку NuGet на Newtonsoft.Json Десериализацию с помощью Demo result = JsonConvert.DeserializeObject<Demo>("{\"player\":0, \"size\":3}");

Пример консольного приложения:

using System;
using Newtonsoft.Json;

namespace Demo
{
    public class Demo
    {
        public int player { get; set; }
        public int size { get; set; }
    }

    class Program
    {
        static void Main()
        {
            Demo result = JsonConvert.DeserializeObject<Demo>("{\"player\":0, \"size\":3}");

            Console.WriteLine(result.player); // "0"
            Console.WriteLine(result.size);   // "3"
        }
    }
}
0 голосов
/ 05 июня 2018

это очень просто.сначала загрузите этот nuget через консоль диспетчера пакетов:

Install-Package Newtonsoft.Json -Version 11.0.2

, затем добавьте это пространство имен: Newtonsoft.Json.Linq

JObject jObject = JObject.Parse(data);

int player = jObject["player"].Value<int>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...