c# - 使用 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);
解决方案
尝试这个。
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; }
}
推荐阅读
- graph - nvd3图形变化值
- mysql - 按产品类别划分的销售额增长
- websphere - 如何构建脚本以在 Certent CDM 中查询 Cognos TM1 多维数据集?
- amazon-web-services - VPC 之外的 AWS Elasticache/Redis 访问?
- javascript - 属性赋值 expected.javascript 和 Expression expected.javascript
- azure - 可以在 Azure Signal R 服务中创建的组数量是否有限制?
- python - 无法使用按钮命令更新 tkinter 网格
- unix - xmlstarlet 不起作用
- node.js - 使用匹配的相邻字段查找文档
- spring - Spring 5 中的 Log4jConfigurer