2010-07-16 8 views
2

Essayer d'obtenir un objet de str1 = X = Y & str2 utilisant Newtonsoft.Jsonchaîne de valeur paire nom Json

Obtenir: « Caractère inattendu rencontré en valeur l'analyse syntaxique. S la ligne 1, 1 "

Est-ce que je m'attends à ce que cela fonctionne?

public class MyTest 
{ 
    public string str1 { get; set; } 
    public string str2 { get; set; } 
} 

public MyTest GetJson() 
{ 
     data = "str1=X&str2=Y"; 
     JsonSerializerSettings jss = new JsonSerializerSettings(); 
     jss.MissingMemberHandling = MissingMemberHandling.Error; 
     jss.ObjectCreationHandling = ObjectCreationHandling.Reuse; 
     MyTest myTest = JsonConvert.DeserializeObject<MyTest>(data, jss); 
} 
+1

Ces données ne sont pas JSON. –

+0

Qu'essayez-vous de faire? – SLaks

Répondre

3

Oui, vous êtes loin. json ressemble plus à ceci:

{"str1":"x","str2":"y"} 

Voir www.json.org pour plus d'informations.

Modifier

Pour convertir une chaîne de requête à JSON:

var queryString = "str1=X&str2=Y"; 
var queryParams = HttpUtility.ParseQueryString(queryString); 

var jsonObject = new JObject(from k in queryParams.AllKeys 
          select new JProperty(k, queryParams[k])); 

Pour convertir une chaîne JSON à un objet:

MyTest test = JsonConvert.DeserializeObject<MyTest>(jsonObject.ToString()); 

Pour convertir un objet JSON:

var test = JsonConvert.SerializeObject(new MyTest{str1 = "X", str2 = "Y"}); 
+0

Un mineur mineur, JSON propre encapsule toujours les noms de clé entre guillemets doubles: '{" str1 ":" x "," str2 ":" y "}' Bien que cela ne soit pas toujours appliqué. Votre exemple est un littéral d'objet javascript qui, bien que similaire, n'est pas identique. –

+0

alors que c'est un objet Javascript valide, ce n'est pas JSON valide. JSON nécessite que les clés soient également citées, vous auriez ceci: '{" str1 ":" x "," str2 ":" y "}' – bluesmoon

+0

Merci, les gars. Correction de la réponse – StriplingWarrior

2

C'est une chaîne de requête, pas une chaîne JSON.
Vous pouvez l'analyser en utilisant HttpUtility.ParseQueryString, ce qui renvoie un NameValueCollection.

+0

qui me laisse à peu près au même endroit, comment convertir NameValueCollection en json? – saarpa

Questions connexes