2013-08-28 21 views
27

Jeśli mam tej metody:Argument Wyjątek podczas tworzenia JObject

public void doSomething (Dictionary<String, Object> data) 
{ 
    JObject jsonObject = new JObject(data); 
    ... 
} 

dostaję System.ArgumentException na linii, gdzie stworzenia JObject. Używam opakowania Json.net Newtona-Kinga.

Błąd pojawia się:

Pierwsza szansa wyjątek typu „System.ArgumentException” wystąpił w Newtonsoft.Json.DLL wyjątek typu „System.ArgumentException” wystąpił w Newtonsoft.Json .DLL, ale nie było obsługiwane w kodzie użytkownika

Co ja tu robię źle?

+0

Czy to NewtonSoft za JObject z którego korzystasz? – paqogomez

+0

@paqogomez to jest. –

+0

Wysyłanie całego błędu jest również pomocne ... czy nie można określić typu obiektu JSON dla typu System.Collections.Generic.KeyValuePair'2 [System.String, System.String]. "? – paqogomez

Odpowiedz

55

Konstruktor JObject(object) oczekuje przedmiotu być albo JProperty An IEnumerable zawierający JProperties lub innego JObject. Niestety, dokumentacja nie wyjaśnia tego.

Aby utworzyć JObject ze słownikiem lub zwykły przedmiot, użyj JObject.FromObject zamiast:

JObject jsonObject = JObject.FromObject(data); 

Aby utworzyć JObject z ciągu JSON, użyj JObject.Parse, np:

JObject jsonObject = JObject.Parse(@"{ ""foo"": ""bar"", ""baz"": ""quux"" }"); 
+1

jak o tworzeniu JObject z ciągu? Jak to robisz? –

+5

JObject.Parse (myJsonString) – paqogomez

Powiązane problemy