Ne peut pas désérialiser l'actuel objet JSON (par exemple, {“name”:“valeur”}) dans le " type de Système.Les Collections.Génériques.Liste 1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Facebook;
using Newtonsoft.Json;
namespace facebook
{
class Program
{
static void Main(string[] args)
{
var client = new FacebookClient(acc_ess);
dynamic result = client.Get("fql", new { q = "select target_id,target_type from connection where source_id = me()"});
string jsonstring = JsonConvert.SerializeObject(result);
//jsonstring {"data":[{"target_id":9503123,"target_type":"user"}]}
List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);
}
public class Datum
{
public Int64 target_id { get; set; }
public string target_type { get; set; }
}
public class RootObject
{
public List<Datum> data { get; set; }
}
}
}
Ne peut pas désérialiser l'actuel objet JSON (par exemple, {"name":"valeur"})
dans le type
'Système.Les Collections.Génériques.Liste`1[facebook.Programme+RootObject]'
parce que le type requiert un tableau JSON (par exemple, [1,2,3]) pour désérialiser
correctement. Pour corriger cette erreur soit modifier le JSON d'un tableau JSON
(par exemple, [1,2,3]) ou de modifier le désérialisé, de façon à ce que c'est normal
.NET type (par exemple, pas un type primitif comme entier, n'est pas une collection
type comme un tableau ou une Liste) qui peut être
J'ai regardé d'autres postes.
Mon json ressemble à ceci:
{"data":[{"target_id":9503123,"target_type":"user"}]}
- Il y a un objet racine (
{"data": ..}
), pas une liste d'entre eux.
Vous devez vous connecter pour publier un commentaire.
De préciser, en plus du @SLaks réponse, cela signifiait que vous avez besoin de changer cette ligne :
à quelque chose comme ceci :
Que le message d'erreur est d'essayer très dur de vous dire, vous ne pouvez pas désérialiser un objet unique dans une collection (
List<>
).Vous voulez désérialiser en un seul
RootObject
.DataContractJsonSerializer(typeof(string[])).ReadObject()...
il fonctionne, tout simplement, même si la chaîne de désérialiser àstring[]
est '{}'Qui est arrivé à moi aussi, parce que j'essayais d'obtenir un
IEnumerable
mais la réponse avait qu'une seule valeur. Veuillez essayer de vous assurer que c'est une liste de données dans votre réponse. Les lignes que j'ai utilisé (pour l'api url get) pour résoudre le problème sont comme celles-ci:Espère que Cela aide.
Pouvez-vous essayer de changer votre json sans
data
clés comme ci-dessous?Le vrai problème est que vous utilisez dynamique type de retour dans le FacebookClient méthode Get. Et même si vous utilisez une méthode pour la sérialisation, le JSON converter ne permet pas de désérialiser cet Objet par la suite.
Utilisation insted de:
quelque chose comme ça:
Ensuite, vous pouvez utiliser DeserializeObject méthode:
Espère que cette aide.
votre serveur SQL server est down ou
serveur de base de données n'est pas disponible.