Строка JSON в список или другой используемый формат в asp.net 2.0 - PullRequest
1 голос
/ 19 сентября 2008

У меня есть один JSON в формате string. Мне нужно хранить его в key-pair значении или что-то в этом роде. Я использую asp.net 2.0 и не могу использовать стороннюю DLL, как Newtonsoft.Json.dll. Я думаю, что последний вариант будет использовать regular expression.

Может кто-нибудь помочь мне в этом?

Ответы [ 4 ]

4 голосов
/ 14 декабря 2008

Если вы перейдете на http://www.json.org/ и посмотрите вниз страницы, там находятся десятки библиотек json, большинство из которых с открытым исходным кодом, я полагаю, что они перечисляют 8 для C #. Если вы не можете сослаться на одну из этих библиотек, я думаю, что вам лучше всего найти одну с разрешающей лицензией и просто добавить код в ваш проект.

Другая идея состоит в том, чтобы взглянуть на диаграммы, грамматику и синтаксис на http://www.json.org/ и просто написать свой собственный анализатор, но регулярное выражение - НЕ способ сделать это. Если вы не знаете, как написать синтаксический анализатор, вы можете взглянуть на одну из библиотек json с открытым исходным кодом или начать с чего-то менее сложного, например, хорошего парсера CSV, вот статья, которая выглядит довольно неплохо: http://www.boyet.com/Articles/CsvParser.html

3 голосов
/ 01 января 2009

Возможно сериализовать JSON, используя JScript в C #, в пары ключ / значение. Вам нужно добавить несколько ссылок на ваш проект. Они являются частью .NET Framework, вам просто нужно добавить ссылки на ваш проект. Вам понадобится:

  • 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'
0 голосов
/ 19 сентября 2008

Вам нужно будет использовать jscript.net в качестве кода языка, но другие страницы вашего сайта должны оставаться c #, если вы этого предпочитаете.

Как уже упоминалось в предыдущем комментарии, вам нужно знать об аспектах безопасности и рисках - используйте eval, только если вы доверяете JSON, который вы анализируете!

0 голосов
/ 19 сентября 2008

Не могли бы вы использовать JScript.NET?

Если это так, это должно быть достаточно просто с помощью eval () - просто циклически перебирайте возвращаемые объекты и переводите в KeyValuePair или что-то еще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...