我正在通过winform
将对象传递给C#socketIO
应用程序,虽然我设法获取数据,但是无法从对象获取键值,到目前为止,下面是我捕获代码的代码来自套接字服务器的数据。
socket.On("traverseLeft", (data) =>
{
Invoke(new Action(() =>
{
MessageBox.Show(data.ToString());
}));
});
下面是我的输出,我需要获取的是Interactive_link的值“ sub”,我该如何在C#上实现这一点?
{
"msg":{
"interactive_link":"sub"
}
}
答案 0 :(得分:2)
您可以根据JSON响应创建模型类。您可以使用http://json2csharp.com/
在线创建它public class Msg
{
public string interactive_link { get; set; }
}
public class MyJson
{
public Msg msg { get; set; }
}
然后使用Newtonsoft.Json
(nuget)将json反序列化为此类。
var myJson = JsonConvert.DeserializeObject<MyJson>(json);
然后访问您的数据
var interactiveLink = myJson.msg.interactive_link;
答案 1 :(得分:2)
首先,从NuGet下载Newtonsoft NuGet软件包:Newtonsoft.Json
。
然后创建以下类:
public class RootObject
{
[JsonProperty("msg")]
public Message Message { get; set; }
}
public class Message
{
[JsonProperty("interactive_link")]
public string InteractiveLink { get; set; }
}
最后执行此操作:
var inputObj = JsonConvert.DeserializeObject<RootObject>(data);
var message = inputObj.Message.InteractiveLink;
MessageBox.Show(message);
希望这会有所帮助。
答案 2 :(得分:1)
您还可以使用JObject
来读取属性
JObject obj = JObject.Parse(json);
Console.WriteLine(obj["msg"]["interactive_link"]);
答案 3 :(得分:1)
如果数据具有已定义的结构,则可以使用强类型化方式。因此,您应该先定义您的课程:
public class Msg
{
public string interactive_link { get; set; }
}
public class DataObject
{
public Msg msg { get; set; }
}
然后将JSON结果解析为已定义的对象:
var result = Newtonsoft.Json.JsonConvert.DeserializeObject<DataObject>(data);