web-dev-qa-db-fra.com

Conversion d'une chaîne en JSON en C #

J'essaie d'utiliser JSON simple pour convertir cette chaîne en JSON:

"{\"objects\":[{\"id\":1,\"title\":\"Book\",\"position_x\":0,\"position_y\":0,\"position_z\":0,\"rotation_x\":0,\"rotation_y\":0,\"rotation_z\":0,\"created\":\"2016-09-21T14:22:22.817Z\"},{\"id\":2,\"title\":\"Apple\",\"position_x\":0,\"position_y\":0,\"position_z\":0,\"rotation_x\":0,\"rotation_y\":0,\"rotation_z\":0,\"created\":\"2016-09-21T14:22:52.368Z\"}]}"

Malheureusement, il semble que Visual Studio ne dispose pas de la console de débogage interactive. Comme dans, placer un débogueur sur une ligne et entrer dans cette partie du code dans une console interactive en direct. Où je serais autrement en mesure d’expérimenter avec la bibliothèque de SimpleJSON et de voir comment le faire fonctionner. Bien sûr, corrigez-moi si je me trompe! 

Etant donné que c'est impossible, est-ce que quelqu'un saurait comment accomplir cela? J'ai essayé ceci:

JSONData jsonData = new JSONData(my_json_string);

Mais cela échappe encore plus à la chaîne et lui conserve une chaîne: 

"\"{\\\"objects\\\":[{\\\"id\\\":1,\\\"title\\\":\\\"Book\\\",\\\"position_x\\\":0,\\\"position_y\\\":0,\\\"position_z\\\":0,\\\"rotation_x\\\":0,\\\"rotation_y\\\":0,\\\"rotation_z\\\":0,\\\"created\\\":\\\"2016-09-21T14:22:22.817Z\\\...

Je suis nouveau dans le langage C #, mais je suis surpris de constater qu’il n’ya rien de ce qui pourrait rendre quelque chose d'aussi courant que l'analyse JSON plus accessible. Est-ce qu'il y a un?

7
Trip

Commencez par créer votre modèle de données. Vous pouvez utiliser json2sharp , outil très utile.

public class Item
{
    public int id { get; set; }
    public string title { get; set; }
    public int position_x { get; set; }
    public int position_y { get; set; }
    public int position_z { get; set; }
    public int rotation_x { get; set; }
    public int rotation_y { get; set; }
    public int rotation_z { get; set; }
    public string created { get; set; }
}

Ensuite, utilisez Newtonsoft.Json et appelez la méthode de désérialisation. 

var list = JsonConvert.DeserializeObject<List<Item>>(Yourjson);
11
M. Wiśnicki

Avez-vous essayé les utilitaires système?

Comme celui-ci https://msdn.Microsoft.com/ru-ru/library/system.json.jsonvalue.parse%28v=vs.95%29.aspx

Vous pouvez utiliser 

public static JsonValue Parse(string jsonString)

de JsonValue classe et lancez ensuite jsonobject ou tout ce que vous voulez.

0
Amir Rasulov

La question demande comment convertir une chaîne en un objet JSON ... Ceci peut être réalisé sans utiliser un modèle de classe ou de données, comme suit:

using Newtonsoft.Json;

string str = "{\"objects\":[{\"id\":1,\"title\":\"Book\",\"position_x\":0,\"position_y\":0,\"position_z\":0,\"rotation_x\":0,\"rotation_y\":0,\"rotation_z\":0,\"created\":\"2016-09-21T14:22:22.817Z\"},{\"id\":2,\"title\":\"Apple\",\"position_x\":0,\"position_y\":0,\"position_z\":0,\"rotation_x\":0,\"rotation_y\":0,\"rotation_z\":0,\"created\":\"2016-09-21T14:22:52.368Z\"}]}";
dynamic json = JsonConvert.DeserializeObject(str);

Maintenant, vous pouvez accéder au contenu de json comme suit:

json["objects"][0]["title"];

returns "Book"

Une option pour une "console de débogage interactive" où vous pouvez jouer avec du code C # est Xamarin Workbooks ... Microsoft.com/en-us/xamarin/tools/workbooks/

Xamarin Workbooks fournit un mélange de documentation et de code idéal pour l'expérimentation, l'apprentissage et la création ... bla bla bla 

0
RumbleFish