2016-01-18 3 views
0

Я хочу использовать стандартную библиотеку .NET без каких-либо дополнительных ссылок. Я сделал поиск в Google, но я не нашел никаких классов, которые я могу использовать.Прочитайте строку как json

Модель данных (атрибуты) также основана на файле конфигурации, поэтому создание класса для объектов не является хорошей идеей, потому что это делает мое приложение неустойчивым.

любой совет?

+0

Вы используете webapi? –

+0

Почему вы не можете добавить ссылку на Json.Net, например? –

ответ

0

Захватите исходный код библиотеки JSON.Net, добавьте его в свое решение и укажите его в своих проектах.

https://github.com/JamesNK/Newtonsoft.Json/tree/master/Src/Newtonsoft.Json

Теперь у вас есть все возможности Json.NET без каких-либо внешних зависимостей.

Затем, когда вы устали от его ручного обновления, расслабьтесь в правиле «только в рамках» и добавьте его через Nuget, чтобы его было очень легко управлять.

EDIT: Есть два встроенных сериализатора JSON, но они оба всасывают свои собственные особые способы.

JavaScriptSerializer UTC DateTime issues

JavaScriptSerializer и DataContractJsonSerializer изобилуют ошибками. Вместо этого используйте json.net. Даже Microsoft сделала этот переключатель в ASP.Net MVC4 и других последних проектах.

0

Я не уверен, что есть простой способ сделать это, используя только каркасные классы

Библиотека Json.Net (который используется Web API и такое) позволяет сделать это довольно легко, хотя , См. Пример http://www.newtonsoft.com/json/help/html/QueryingLINQtoJSON.htm.

0

В классе JavaScriptSerializer есть функции для преобразования между объектом JSON и строкой. Может быть, вы можете взглянуть?

0

Вы пробовали SimpleJSON отсюда: http://wiki.unity3d.com/index.php/SimpleJSON? На этой странице отображается одна страница исходного кода. Он выполняет обычную работу по разбору строк. Очевидно, на JSON.Net ничего не получилось.

+0

Хорошая ссылка! Удобно, если вы хотите быстро удалить один файл кода. – AndyJ

0

Если добавить ссылку на System.Web.Extensions в ваш проект вы можете использовать JavaScriptSerializer класс для десериализации вашей строки в JSON:

var json = new JavaScriptSerializer().Deserialize<MyType>(myString); 

Вы также можете сделать это динамически, так что вы не необходимо указать тип:

string myString = @" 
{ 
    ""Hello"": 1, 
    ""World"": ""FooBar"" 
}"; 

dynamic json = new JavaScriptSerializer().DeserializeObject(myString); 
int hello = json["Hello"]; 
string world = json["World"]; 
Смежные вопросы