C#:字符串(JSON)到对象(通用)的转换增加了大括号

时间:2018-10-25 04:25:38

标签: c# json

我有一个json作为字符串。我想将其转换为对象。但是在转换过程中,一切都很好,除了我在对象之外得到了一个额外的括号。那不是有效的json。

string st = "{\"Category\":\"test\"}";
var someType = JsonConvert.DeserializeObject(st);
//output of someType is {{"Category": "test"}}
//expected output {"Category": "test"}

我也尝试过“ JObject.Parse()”。但是结果是一样的。它为对象添加了额外的括号。 我希望将输出强制作为对象。

我做错了什么吗?我想念什么吗?

1 个答案:

答案 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\"}");