LINQ to JSON в .NET
Есть ли такая вещь, как JSON файл? То есть, *.json?
Может ли JSON использоваться в коде С# без каких-либо элементов JavaScript, вроде замены XML?
И есть ли официальная LINQ для JSON для С#?
Я нашел один веб-сайт для моего последнего вопроса, но он взял меня на страницу для загрузки JSON.NET, и эта страница, похоже, ничего не упоминает о LINQ.
Ответы
Ответ 1
-
Да, есть такая вещь, как файл *.json. Тип MIME application/json
(источник). JSON - это текстовый формат, поэтому вы можете гипотетически хранить JSON-форматированные данные в текстовом файле с любым расширением, которое вы выберете.
-
JSON можно абсолютно использовать независимо от JavaScript. В некоторых случаях он, вероятно, лучше подходит для представления ваших данных, чем XML. JSON.org имеет отличную страницу сравнения между JSON и XML.
-
JSON.org перечисляет несколько библиотек JSON для С# (например, JSON.NET, которые вы уже обнаружили), и большинство (если не все) коллекций, которые используют эти библиотеки, должны поддерживать LINQ. JSON.NET определенно предлагает поддержку для нее. См. здесь или здесь.
Ответ 2
Каждый человек имеет тенденцию придерживаться JavaScriptSerializer (из библиотеки System.Web.Extensions) при работе с JSON в .NET. Удобной частью этого является возможность создания пользовательского JavaScriptConverter, который будет принимать пользовательские объекты и сериализовать их так, как вы выбрали. Аналогично, вы можете сделать метод десериализации для получения в пользовательском форматировании JSON.
Хотя это, конечно, зависит от вашего приложения. Учитывая, что это приложение Windows Forms, есть ли какая-то особая причина, по которой вы выбрали JSON для хранения информации изначально или просто использовать формат XML? Если ваше приложение взаимодействует с веб-страницами, JavaScriptSerializer, вероятно, лучший выбор, но если вы используете его для хранения/получения настроек, я бы использовал XML. И, если вам необходимо синхронизировать ваше приложение с веб-интерфейсом, просто выполните сериализацию в JSON, когда время будет готово.
Ответ 3
Вы можете десериализовать свой JSON файл на объекты С#. После этого вы можете запросить LINQ на этих объектах.