,c#,json.net"/>

首页 > 解决方案 > 使用 Json.NET 将 JObject 转换为 Dictionary

问题描述

像这样使用 JSON 进行测试:

{\"key1\":\"value1\",\"key2\":\"value3\",\"key3\":[\"value4\"],\"key5\":\"value5\"}\n;

无效参数异常: 'Newtonsoft.Json.JsonConvert.DeserializeObject>(string)'

这是我的代码:

string json = "{\"action\":\"recognition\",\"command\":\"event\",\"eventid\":[\"1108\"],\"from_ip\":\"192.168.0.49\",\"user\":\"safetymaster\"}\n";
json = json.Replace("\n", "");  

var DeserializedJson= JsonConvert.DeserializeObject<dynamic>(json);                                
Dictionary<string, string> jsonDic = JsonConvert.DeserializeObject<Dictionary<string, string>>(DeserializedJson);

标签: c#json.net

解决方案


尝试这个。

class Program
{
    static void Main(string[] args)
    {
        try {
            string json = "{\"action\":\"recognition\",\"command\":\"event\",\"eventid\":[\"1108\"],\"from_ip\":\"192.168.0.49\",\"user\":\"safetymaster\"}\n";
            json = json.Replace("\n", "");
            RootObject m = JsonConvert.DeserializeObject<RootObject>(json);
            string ipAddress = m.from_ip;
            string eventID = m.eventid[0];

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }

    }
}

根据 JSON 对象定义一个类。

public class RootObject
{
    public string action { get; set; }
    public string command { get; set; }
    public List<string> eventid { get; set; }
    public string from_ip { get; set; }
    public string user { get; set; }
}

推荐阅读