2013-05-02 30 views
0

我的JSON(MyString的)看起来像这样:JSON.NET不会反序列化为我的对象,抛出一个异常

"http://d.opencalais.com/dochash-1/0701d73f-2f99-39e1-8c29-e61ee8bf3238/cat/1": 
{ 
    "_typeGroup": "topics", 
    "category": "http://d.opencalais.com/cat/Calais/Law_Crime", 
    "classifierName": "Calais", 
    "categoryName": "Law_Crime", 
    "score": 0.869 
} 

我想上面的确切字符串deserialise成一个对象:

public class OpenCalaisResult 
{ 
    public string _typeGroup {get; set; } 
    public string category { get; set; } 
    public string categoryName { get; set; } 
    public string classifierName { get; set; } 
    public decimal score { get; set; } 
} 

我想这个代码:

OpenCalaisResult myObject = (OpenCalaisResult)JsonConvert.DeserializeObject(myString, typeof(OpenCalaisResult), settings); 

我得到一个异常:

{“Error conversion value \”http://d.opencalais.com/dochash-1/0701d73f-2f99-39e1-8c29-e61ee8bf3238/cat/1 \“ to type'MyApp.Parsers.JsonTypes.OpenCalaisResult'。路径 ',1号线,78位“}

任何想法,我做错了吗?

+0

您的JSON格式不正确。我不擅长json,所以我使用http://jsonlint.com/来确保它是有效的。 – Jonesopolis 2013-05-02 15:22:58

+0

我认为你已经破解了它,即使我正在使用JProperty并将其转换为JSON字符串,但它实际上并不是有效的JSON,因为它缺少{和}。如何将它转换为JSON的方法会让人忘记这些。我手动添加它们,现在它似乎工作。谢谢。 – NibblyPig 2013-05-02 15:25:42

+0

肯定的事先生。 – Jonesopolis 2013-05-02 15:26:07

回答

5

您的JSON应该是这样的

{ 
"http://d.opencalais.com/dochash-1/0701d73f-2f99-39e1-8c29-e61ee8bf3238/cat/1": 
    { 
    "_typeGroup": "topics", 
    "category": "http://d.opencalais.com/cat/Calais/Law_Crime", 
    "classifierName": "Calais", 
    "categoryName": "Law_Crime", 
    "score": 0.869 
    } 
    } 
+0

You'最后,解决方案是在上面的JSON上做.Children.First(),这给了我没有顶部的'{“_typeGroup”:“topics”,....}',并且解析了它完全融入我的对象,谢谢! – NibblyPig 2013-05-02 18:25:23

0

http://www.json.org/

显示对象具有形式...

{。 ..}

您的JSON的形式是...

x:{...}

我猜'x'是类[de]序列化的类型...我不相信它支持你的库。

JSON支持有点随意。

相关问题