我有一个问题。我试图从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}
如何从此字符串中获取值?
答案 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)
最简单的方法是使用Visual Studio:将JSON文本复制到剪贴板,然后选择Edit | Paste Special | Paste JSON as classes
。根据需要重命名该类(对于此示例,将其命名为Demo)。
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"
}
}
}
答案 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);