列出的JSON字符串或者asp.net 2.0中的其他可用格式

时间:2020-03-06 14:26:31  来源:igfitidea点击:

我有一个string格式的JSON。我需要将其存储在"密钥对"值或者类似的值中。我正在使用" asp.net 2.0",不能使用" Newtonsoft.Json.dll"之类的第三方DLL。我猜最后一个选择是使用"正则表达式"。

有人可以帮我吗?

解决方案

我们可以使用JScript.NET吗?

如果是这样,使用eval()应该足够容易,然后只需遍历返回的对象并将其转换为KeyValuePair或者其他内容即可

我们将需要使用jscript.net作为语言的代码,但是网站的其他页面也应该可以保留,因为这就是喜好。

如之前的评论中所述,我们将需要了解安全性,并且仅在信任要解析的JSON时才使用eval冒险!

如果我们访问http://www.json.org/并查看页面底部,则有许多json库,其中大多数都是开源的,我相信它们列出了C#的8个。如果我们不能引用这些库之一,我认为我们最好的选择是找到一个具有许可许可证的库,然后将代码添加到项目中。

另一个想法是查看http://www.json.org/上的图表,语法和语法,然后编写自己的解析器,但regex并非做到这一点。如果我们不知道如何编写解析器,则可以查看其中一个开源json库,或者从一个不太复杂的东西(如一个好的CSV解析器)开始,这是一篇看起来不错的论文:http://www.boyet.com /Articles/CsvParser.html

可以在Cinto键/值对中使用JScript序列化JSON。我们需要为项目添加一些引用。它们是.NET框架的一部分,我们只需要在项目中添加引用即可。你需要:

  • 微软JSript
  • 微软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;
}

返回的"对象"类型(如果传入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'