我有一个json作为字符串。我想将其转换为对象。但是在转换过程中,一切都很好,除了我在对象之外得到了一个额外的括号。那不是有效的json。
string st = "{\"Category\":\"test\"}";
var someType = JsonConvert.DeserializeObject(st);
//output of someType is {{"Category": "test"}}
//expected output {"Category": "test"}
我也尝试过“ JObject.Parse()”。但是结果是一样的。它为对象添加了额外的括号。 我希望将输出强制作为对象。
我做错了什么吗?我想念什么吗?
答案 0 :(得分:1)
在您要问的情况下,JsonConver.DeserializeObject(st)
确实在执行您要问的事情。您要让它将“对象” {"Category": "test"}
的字符串表示形式转换为json对象。您的方法的问题在于,编译器不知道如何将该字符串解释为对象以外的任何其他内容,因此它将其包装在JSON对象中。
要获得所需的结果,而无需声明POCO(即反序列化匿名类型),则需要执行以下操作
var definition = new { Category = "" };
var data = @"{'Category':'Test'}";
var me = JsonConvert.DeserializeAnonymousType(data, definition);
Console.WriteLine(me);
根据评论中的要求添加其他解决方案。
dynamic deserialized = JObject.Parse("{\"Category\":\"test\"}");