json.net DeserializeObject
J'ai code suivant:
string code = client.DownloadString("http://oddsportal.com/feed/prematch/1-1-hSpbs4Cd-1-2.dat");
DataSet data = JsonConvert.DeserializeObject<DataSet>(code.Substring(3, code.Length - 6));
textBox1.Text += "1";
Mais il s'arrête sur la deuxième ligne comme si il était de retour il n'a pas d'écrire 1 dans la zone de texte.
Ce que je fais mal?
Ici, il est réécrit avec la structure: http://pastebin.com/xZAhjU8w
Merci.
EDIT: UN utilisé un try-catch et son exception est:
Newtonsoft.Json.JsonSerializationException: texte Supplémentaire constaté dans la chaîne JSON après la fin de la désérialisation d'un objet.
au Newtonsoft.Json.La sérialisation.JsonSerializerInternalReader.Deserialize(JsonReader lecteur, Type objectType, Boolean checkAdditionalContent) dans c:\Temp\Json\Working\Newtonsoft.Json\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:line 177
au Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader lecteur, Type objectType) dans c:\Temp\Json\Working\Newtonsoft.Json\Src\Newtonsoft.Json\JsonSerializer.cs:line 711
au Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader lecteur, Type objectType) dans c:\Temp\Json\Working\Newtonsoft.Json\Src\Newtonsoft.Json\JsonSerializer.cs:line 663
au Newtonsoft.Json.JsonConvert.DeserializeObject(Chaîne de valeur, de Type type, JsonSerializerSettings paramètres) dans c:\Temp\Json\Working\Newtonsoft.Json\Src\Newtonsoft.Json\JsonConvert.cs:line 797
au Newtonsoft.Json.JsonConvert.DeserializeObject[T](Chaîne de valeur, JsonSerializerSettings paramètres) dans c:\Temp\Json\Working\Newtonsoft.Json\Src\Newtonsoft.Json\JsonConvert.cs:line 757
au Newtonsoft.Json.JsonConvert.DeserializeObject[T](Chaîne de valeur) en c:\Temp\Json\Working\Newtonsoft.Json\Src\Newtonsoft.Json\JsonConvert.cs:line 694
au oddsreader.Form1.Form1_Load(Object sender, EventArgs e) dans c:\Users\zuz\Documents\Visual Studio 2012\Projects\oddsreader\oddsreader\Form1.cs:ligne 692
Quand j'ai essayé quelques-uns en ligne json validateurs, ils sont retournés de la chaîne est valide. Ce qui pourrait être mal avec elle?
EDIT2: j'étais peut-être complètement faux. Je poserai donc une simplification de la quastion. Comment pourrais-je faire un foreach de "chances" tableau foreach de ses sous-réseaux? Le chemin de la cote est: ["d"]["oddsdata"]["dos"]["E-1-2-0-0-0"]["la cote"]. Je n'ai pas trouvé un exemple de code avec le mode de 2 piles de niveau.
Vous devez vous connecter pour publier un commentaire.
Votre problème n'est pas à la chaîne, c'est avec le cast de 'DataSet'. Cela fonctionne bien pour moi :
foreach(subarray in json["d"]["oddsdata"]["back"]["E-1-2-0-0-0"])
, comment pourrais-je le faire?foreach (JProperty prop in ((JObject)json["d"]["oddsdata"]["back"]["E-1-2-0-0-0"]).Properties()) { Console.WriteLine(string.Format("obj[{0}] = {1}", prop.Name, prop.Value)); }
mais comme vous pouvez le voir, avec un tel mal formatées en JSON ça va être un pain PITAIl semble que
JsonConvert
ne pouvait pas exécuterDeserializeObject
sur votre paramètre que vous avez passé en.C'est-à-dire
(3, code.Length - 6)
probablement ne vous donne pas une chaîne json valide, donc JsonConvert ne peut pas le convertir.Une exception a probablement été levée, mais vous n'avez pas l'attraper, par conséquent, il présentait le "retour" comme comportement.
- | -{json}- | -
ajouté à l'avant de la chaîne json qui est dans le pastebin lien?{ "s": 1, "d": { "bt": 1, "sc": 2 } }
Ensuite, je voudrais d'accès comme: variable["d"]["bt"]; ce qui serait égal à 1. Est-ce la façon de l'aborder, même de corriger?