سؤال

في رده على سؤال سألت قبل بضعة أيام، وأنا محاولة لتمتد نفسي قليلا، والقيام بشيء ما أنا لم تركز حقا على ذلك بكثير من قبل. لقد فعلت بعض البحث (سواء هنا، وبصفة عامة)، ولكن لا يمكن العثور على أجوبة (أو حتى تلميحات معقولة) إلى ما أريد تحقيقه (على الرغم من عدد قليل من الأشياء تقترب العش).

والأساس، وأنا أحاول أن إلغاء تسلسل البيانات للملف العناوين جوجل كروم باستخدام مكتبة Json.NET (ورغم ذلك، إذا كان هناك بديل أفضل، أنا كل لذلك - وثائق هذه المكتبة قليلا مربكة في الأماكن). أنا مرتبك قليلا إلى الخطوة التالية التي يجب اتخاذها، ويرجع ذلك أساسا إلى استخدامها لمعالجة PHP ورائعة من البيانات JSON (باستخدام <لأ href = "http://uk.php.net/json_decode" يختلط = "noreferrer" > json_decode () )، والسماح لاستدعاء دالة واحدة، وبعد ذلك بسيط وصول النقابي صفيف.

والمكتبة (Json.NET) تريدني لتحديد نوع الكائن أنه يمكن إلغاء تسلسل البيانات 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
}

والآن، في PHP، وسأكون أكثر تعودا على القيام بشيء على غرار ما يلي، للحصول على البيانات أردت، وتنتهي مع "Json.NET ':

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

ويمكنني العمل بها، ببساطة بما فيه الكفاية، ما تعترض على إنشاء لتمثيل البيانات (ما يشبه الكائن الجذر، ثم كائن قائمة مرجعية، وأخيرا كائن مرجعية فردية) - ولكن أنا حقا لست متأكدا عن كيفية لتنفيذها، ومن ثم الحصول على مكتبة لإلغاء تسلسل في الكائنات ذات الصلة بشكل صحيح.

وأي النصائح التي يمكن تقديمها سيكون موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

وليس من الضروري أن يعلن النوع الذي يعكس هيكل سلمان:

    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);
        }
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top