문제

며칠 전에 물었던 질문에 대한 응답으로, 나는 나 자신을 조금 늘리려고 노력하고 있으며, 이전에 많은 초점을 맞추지 못한 일을하고 있습니다. 나는 약간의 검색을 수행했지만 (여기, 일반적으로), 내가 달성하고자하는 것에 대한 답 (또는 합리적인 힌트)을 찾을 수는 없습니다 (그러나 몇 가지가 가까이 있습니다).

기본적으로 나는 Google Chrome 북마크 파일의 데이터를 json.net 라이브러리 (더 나은 대안이 있다면, 나는 그 모든 것이 그럴 것입니다.이 라이브러리의 문서는 장소에서 약간 혼란 스럽습니다). 나는 주로 PHP의 환상적인 JSON 데이터 처리에 사용되기 때문에 다음 단계에 대해 약간 혼란스러워합니다. json_decode ()), 단일 기능 호출을 허용 한 다음 간단한 연관 배열 액세스.

Library (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'];

데이터 (루트 객체, 북마크 목록 객체 및 마지막으로 개별 북마크 객체)를 표현하기 위해 작성해야 할 객체를 충분히 해결할 수 있습니다. 그런 다음 라이브러리가 관련 객체를 올바르게 제조하도록 도서관을 사용하십시오.

제공 할 수있는 조언은 대단히 감사 할 것입니다.

도움이 되었습니까?

해결책

JSON 구조를 반영하는 유형을 선언 할 필요는 없습니다.

    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