1

我有一个JSON格式string。我需要将它存储在一个key-pair值或类似的东西中。我正在使用asp.net 2.0并且不能使用 3rd 方之DLL类的Newtonsoft.Json.dll。我想最后一个选择是使用regular expression.

有人可以帮我吗?

4

4 回答 4

4

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

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

于 2008-12-14T19:13:21.827 回答
3

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

  • Microsoft.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;
}

返回的类型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'
于 2009-01-01T20:13:37.133 回答
0

你可以使用 JScript.NET 吗?

如果是这样,使用 eval() 应该很容易 - 然后只需遍历返回的对象并转换为 KeyValuePair 或其他

于 2008-09-19T15:34:53.563 回答
-1

您将需要使用 jscript.net 作为语言背后的代码,但如果您喜欢的话,您网站的其他页面应该可以保留为 c#。

正如之前的评论中提到的,您需要了解安全方面和风险 - 如果您信任您正在解析的 JSON,请仅使用 eval !

于 2008-09-19T16:43:49.713 回答