从JSON对象获取键值

时间:2019-11-13 09:26:58

标签: c# json

我正在通过winform将对象传递给C#socketIO应用程序,虽然我设法获取数据,但是无法从对象获取键值,到目前为止,下面是我捕获代码的代码来自套接字服务器的数据。

socket.On("traverseLeft", (data) =>
    {
        Invoke(new Action(() =>
        {

           MessageBox.Show(data.ToString());

        }));

    });

下面是我的输出,我需要获取的是Interactive_link的值“ sub”,我该如何在C#上实现这一点?

{  
   "msg":{  
      "interactive_link":"sub"
   }
}

4 个答案:

答案 0 :(得分:2)

您可以根据JSON响应创建模型类。您可以使用http://json2csharp.com/

在线创建它
public class Msg
{
    public string interactive_link { get; set; }
}

public class MyJson
{
    public Msg msg { get; set; }
}

然后使用Newtonsoft.Jsonnuget)将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);