C#의 크롬 북마크 JSON 데이터를 사로화합니다.
-
03-07-2019 - |
문제
며칠 전에 물었던 질문에 대한 응답으로, 나는 나 자신을 조금 늘리려고 노력하고 있으며, 이전에 많은 초점을 맞추지 못한 일을하고 있습니다. 나는 약간의 검색을 수행했지만 (여기, 일반적으로), 내가 달성하고자하는 것에 대한 답 (또는 합리적인 힌트)을 찾을 수는 없습니다 (그러나 몇 가지가 가까이 있습니다).
기본적으로 나는 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);
}
}