Frage

Als Antwort auf eine Frage, fragte ich vor ein paar Tagen, ich bin versucht, mich ein wenig zu strecken, und tun etwas, was ich habe auf viel vor nicht wirklich fokussiert. Ich habe einige der Suche getan (beide hier und im Allgemeinen), kann aber nicht die Antworten (oder sogar vernünftige Hinweise) finden, was ich will erreichen (obwohl ein paar Dinge kommen close-ish).

Im Grunde genommen, ich versuche, die Daten für die Google Chrome-Lesezeichen-Datei mit dem Json.NET Bibliothek (obwohl, wenn es eine bessere Alternative, ich bin für die - die Unterlagen für diese Bibliothek ist ein wenig verwirrend an Orten). Ich bin ein wenig verwirrt, den nächsten Schritt zu machen, um vor allem auf PHP fantastischen Umgang mit JSON-Daten verwendet wird (mit json_decode () ), für einen einzigen Funktionsaufruf ermöglicht, und dann einfach assoziativen-Array-Zugriff.

Die Bibliothek (Json.NET) will, dass ich einen Objekttyp angeben, dass sie die JSON-Daten in deserialisieren kann, aber ich bin nicht wirklich sicher, wie die Strukturierung eines solchen Objekts zu gehen, da das Format der Lesezeichen-Datei selbst . Das Format ist etwas entlang der Linien von:

{
   "roots": {
      "bookmark_bar": {
         "children": [ {
            "children": [ {
               "date_added": "12880758517186875",
               "name": "Example URL",
               "type": "url",
               "url": "http://example.com"
            }, {
               "date_added": "12880290253039500",
               "name": "Another URL",
               "type": "url",
               "url": "http://example.org"
            } ],
        "date_added": "12880772259603750",
            "date_modified": "12880772452901500",
            "name": "Sample Folder",
            "type": "folder"
         }, {
            "date_added": "12880823826333250",
            "name": "Json.NET",
            "type": "url",
            "url": "http://james.newtonking.com/pages/json-net.aspx";
         } ],
         "date_added": "0",
         "date_modified": "12880823831234250",
         "name": "Bookmarks bar",
         "type": "folder"
      },
      "other": {
         "children": [  ],
         "date_added": "0",
         "date_modified": "0",
         "name": "Other bookmarks",
         "type": "folder"
      }
   },
   "version": 1
}

Nun, in PHP, würde ich viel mehr verwendet werden, etwas entlang der Linien der folgenden zu tun um die Daten zu erhalten, ich wollte, und enden mit ‚Json.NET‘:

$data['roots']['bookmark_bar']['children'][0]['name'];

ich arbeiten können, einfach genug, welche Objekte zu erstellen, um die Daten darzustellen (so etwas wie ein Wurzelobjekt, dann ein Lesezeichen-List-Objekt, und schließlich ein individuelles Lesezeichen-Objekt) - aber ich bin wirklich nicht sicher, wie sie umzusetzen, und erhält dann die Bibliothek in die relevanten Objekte korrekt deserialisieren.

Jede Beratung, die angeboten werden kann, würde sehr geschätzt werden.

War es hilfreich?

Lösung

Es ist nicht notwendig, eine Art zu erklären, dass die json Struktur widerspiegelt:

    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    using System.IO;
    using System;

    class Program
    {
        static void Main(string[] args)
        {
            string json = 
@"
{
   ""roots"": {
      ""bookmark_bar"": {
         ""children"": [ {
            ""children"": [ {
               ""date_added"": ""12880758517186875"",
               ""name"": ""Example URL"",
               ""type"": ""url"",
               ""url"": ""http://example.com""
            }, {
               ""date_added"": ""12880290253039500"",
               ""name"": ""Another URL"",
               ""type"": ""url"",
               ""url"": ""http://example.org""
            } ],
        ""date_added"": ""12880772259603750"",
            ""date_modified"": ""12880772452901500"",
            ""name"": ""Sample Folder"",
            ""type"": ""folder""
         }, {
            ""date_added"": ""12880823826333250"",
            ""name"": ""Json.NET"",
            ""type"": ""url"",
            ""url"": ""http://james.newtonking.com/pages/json-net.aspx""
         } ],
         ""date_added"": ""0"",
         ""date_modified"": ""12880823831234250"",
         ""name"": ""Bookmarks bar"",
         ""type"": ""folder""
      },
      ""other"": {
         ""children"": [  ],
         ""date_added"": ""0"",
         ""date_modified"": ""0"",
         ""name"": ""Other bookmarks"",
         ""type"": ""folder""
      }
   },
   ""version"": 1
}
";
        using (StringReader reader = new StringReader(json))
        using (JsonReader jsonReader = new JsonTextReader(reader))
        {
            JsonSerializer serializer = new JsonSerializer();
            var o = (JToken)serializer.Deserialize(jsonReader);
            var date_added = o["roots"]["bookmark_bar"]["children"][0]["date_added"];
            Console.WriteLine(date_added);
        }
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top