如何从字符串的JSON读取值

时间:2018-06-05 11:42:20

标签: c# json parsing

我有一个问题。我试图从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 :(得分:3)

非常简单。首先通过软件包管理器控制台下载此nuget:

Install-Package Newtonsoft.Json -Version 11.0.2

然后添加此命名空间:     Newtonsoft.Json.Linq

JObject jObject = JObject.Parse(data);

int player = jObject["player"].Value<int>();

答案 1 :(得分:2)

  1. 为该JSON创建一个类。
  2. 最简单的方法是使用Visual Studio:将JSON文本复制到剪贴板,然后选择Edit | Paste Special | Paste JSON as classes。根据需要重命名该类(对于此示例,将其命名为Demo)。

    1. 向您的项目添加对Newtonsoft.Json
    2. 的NuGet引用
    3. 通过Demo result = JsonConvert.DeserializeObject<Demo>("{\"player\":0, \"size\":3}");
    4. 反序列化

      控制台应用示例:

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

答案 2 :(得分:0)

你可以创建一个类:

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

然后使用类似JSON.NET的代码反序列化JSON字符串:

MyClass myClassObject = JsonConvert.DeserializeObject<MyClass>(data);
var playerId = myClassObject.Player;

答案 3 :(得分:0)

为JSON.net添加Nuget包:

在Nuget Package Manager中搜索&#34; Newtonsoft.Json&#34;。

或使用控制台:

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);