我有一个 JSON 那就是来一个 string 格式。我需要它存储在一个 key-pair 值或者类似的东西。我使用 asp.net 2.0 和不能使用第3次方 DLL 喜欢 Newtonsoft.Json.dll.我猜最后的选择,将使用 regular expression.

任何人都可以请帮助我这个?

有帮助吗?

解决方案

如果你去 http://www.json.org/ 并查看底部该页面上有几十个json库,其中大部分是开源的,我相信它们列出了8个C#。如果你不能引用这些库中的一个,我认为最好的办法是找到一个具有许可许可的程序,只需将代码添加到你的项目中。

另一个想法是查看 http://www.json.org/上的图表,语法和语法。 并且只编写自己的解析器,但正则表达式是 NOT 的方式。如果您不知道如何编写解析器,您可以查看其中一个开源json库,或者从一个不太复杂的东西开始,就像一个好的CSV解析器,这里有一篇看起来相当不错的论文: http://www.boyet.com/Articles/CsvParser.html

其他提示

它是可能的序列化JSON使用JScript在C#入key/value对。你需要添加一些引用到项目中。他们的一部分。净框架,你只需要添加所提及的项目。你会需要:

  • Microsoft。JSript
  • Microsoft。Vsa

第一,using在您的等级:

using Microsoft.JScript;
using Microsoft.JScript.Vsa;

然后引擎,将执行的脚本中需要进行初始化的地方在你'Page'代码隐藏:

VsaEngine Engine = VsaEngine.CreateEngine();

那么你只是创造这种方法,并呼吁它通过在选对象:

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'.你可以访问其价值观作为key/value对。阅读 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#。

如前面的评论所述,您需要了解安全方面和风险 - 如果您信任正在解析的JSON,则只使用eval!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top