Строка JSON для списка или другого удобного формата в asp.net 2.0

StackOverflow https://stackoverflow.com/questions/102866

  •  01-07-2019
  •  | 
  •  

Вопрос

У меня есть 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!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top