Строка JSON для списка или другого удобного формата в asp.net 2.0
Вопрос
У меня есть JSON
это произойдет через string
формат.Мне нужно сохранить его в key-pair
стоимость или что-то в этом роде.Я использую asp.net 2.0
и не могу использовать сторонние DLL
нравиться Newtonsoft.Json.dll
.Я думаю, последним вариантом будет использование regular expression
.
Может ли кто-нибудь помочь мне в этом?
Решение
Если вы пойдете в http://www.json.org/ и посмотрите внизу страницы, там есть десятки json-библиотек, большинство из которых с открытым исходным кодом, я думаю, что они перечисляют 8 для C #.Если вы не можете сослаться на одну из этих библиотек, я думаю, вам лучше всего найти библиотеку с разрешительной лицензией и просто добавить код в свой проект.
Другая идея — взглянуть на диаграммы, грамматику и синтаксис на сайте http://www.json.org/ и просто напишите свой собственный парсер, но регулярное выражение НЕТ способ сделать это.Если вы не знаете, как написать парсер, вы можете посмотреть одну из json-библиотек с открытым исходным кодом или начать с чего-то менее сложного, например, хорошего синтаксического анализатора CSV. Вот статья, которая выглядит довольно хорошо: http://www.boyet.com/Articles/CsvParser.html
Другие советы
JSON можно сериализовать с помощью JScript на C# в пары ключ/значение.Вам нужно добавить несколько ссылок на ваш проект.Они являются частью платформы .NET, вам просто нужно добавить ссылки в ваш проект.Вам понадобиться:
- Microsoft.JSript
- Microsoft.Vsa
Во-первых, использование в верхней части вашего класса:
using Microsoft.JScript;
using Microsoft.JScript.Vsa;
Затем движок, который будет выполнять скрипт, необходимо инициализировать где-нибудь в вашем 'Page
' код программной части:
VsaEngine Engine = VsaEngine.CreateEngine();
Затем вы просто создаете этот метод и вызываете его, передавая свой объект JSON:
object EvalJScript(string JScript)
{
object result = null;
try
{
result = Microsoft.JScript.Eval.JScriptEvaluate(JScript, Engine);
}
catch (Exception ex)
{
return ex.Message;
}
return result;
}
Тип object
возвращенный (если передан JSON) представляет собой 'JSObject
'.Вы можете получить доступ к его значениям как парам ключ/значение.Прочтите Документация MSDN для получения более подробной информации об этом объекте.
Вот пример использования кода:
string json = "({Name:\"Dan\",Occupation:\"Developer\"})";
JSObject o = EvalJScript(json) as JSObject;
string name = o["Name"] as string; // Value of 'name' will be 'Dan'
Не могли бы вы использовать JScript.NET?
Если это так, это должно быть достаточно просто с помощью eval() - затем просто переберите возвращаемые объекты и преобразуйте их в KeyValuePair или что-то еще.
Вам нужно будет использовать jscript.net в качестве кода языка, но другие страницы вашего сайта могут оставаться на C#, если вы этого предпочитаете.
Как упоминалось в предыдущем комментарии, вам необходимо знать об аспектах безопасности и рисках — используйте eval только в том случае, если вы доверяете анализируемому JSON!