c# - 无效的 Json 原语

标签 c# asp.net json serialization javascriptserializer

你能帮我解决这个问题吗?我有一个 asp.net 应用程序,在此我使用 Javascript 序列化程序序列化数据集,然后转换为列表。该代码如下所示。

JavaScriptSerializer json = new JavaScriptSerializer();
strJson = json.Serialize(aclDoc);

但是,在反序列化时,我的 Json 值得到了一个 ArguementException,例如 Invalid Json Primitives。我的 json 值是

[{"Id":"F79BA508-F208-4C37-9904-DBB1DEDE67DB","App_Id":"ScriptFlow","Name":"New form","FriendlyName":"","Read":"Revoke","ReadRule":"a353776f-cbdc-48b7-a15b-4a2316d19b05","Update":"Grant","UpdateRule":"be30c34e-33ec-4c0a-9f09-4fd483f5f1b9","Create":"Revoke","CreateRule":"898dce4d-4709-45b6-8942-d7efb07cbd86","Delete":"Revoke","DeleteRule":"aa14d435-dec8-4ade-ad9b-830ae5ee15d0"}][{"Id":"1","Doc_Id":"858E013C-5775-4FDF-AA1E-2C84053EE39F","Name":"TextBox1","FriendlyName":"TextBox1","Read":"Grant","ReadRule":"0a2e3c0e-ad8f-4f75-9160-cfd9827ac894","Update":"Grant","UpdateRule":"ecad3cf4-104f-44dc-b815-de039f3a0396"},{"Id":"2","Doc_Id":"858E013C-5775-4FDF-AA1E-2C84053EE39F","Name":"TextBox2","FriendlyName":"TextBox2","Read":"Grant","ReadRule":"81e0e9ef-09f7-4c25-a58e-d5fdfbd4c2ba","Update":"Grant","UpdateRule":"2047f662-c881-413b-a1f9-69f15bf667fc"}]

反序列化的代码是:

JavaScriptSerializer json = new JavaScriptSerializer();
lstDoc = json.Deserialize<List<ACLDocument>>(value);
return lstDoc;

其中 lstDoc 是我类(class)类型的列表集合

我遇到这样的异常:

Invalid JSON primitive:
{"Id":"1","Doc_Id":"858E013C-5775-4FDF-AA1E-2C84053EE39F","Name":"TextBox1","FriendlyName":"TextBox1","Read":"Grant","ReadRule":"0a2e3c0e-ad8f-4f75-9160-cfd9827ac894","Update":"Grant","UpdateRule":"ecad3cf4-104f-44dc-b815-de039f3a0396"},{"Id":"2","Doc_Id":"858E013C-5775-4FDF-AA1E-2C84053EE39F","Name":"TextBox2","FriendlyName":"TextBox2","Read":"Grant","ReadRule":"81e0e9ef-09f7-4c25-a58e-d5fdfbd4c2ba","Update":"Grant","UpdateRule":"2047f662-c881-413b-a1f9-69f15bf667fc"}].

请帮我解决这个问题。提前致谢

最佳答案

您输入的字符串确实是一个错误 JSON 字符串。您的输入由两个正确的 JSON 字符串组成:

[
    {
        "Id": "F79BA508-F208-4C37-9904-DBB1DEDE67DB",
        "App_Id": "ScriptFlow",
        "Name": "New form",
        "FriendlyName": "",
        "Read": "Revoke",
        "ReadRule": "a353776f-cbdc-48b7-a15b-4a2316d19b05",
        "Update": "Grant",
        "UpdateRule": "be30c34e-33ec-4c0a-9f09-4fd483f5f1b9",
        "Create": "Revoke",
        "CreateRule": "898dce4d-4709-45b6-8942-d7efb07cbd86",
        "Delete": "Revoke",
        "DeleteRule": "aa14d435-dec8-4ade-ad9b-830ae5ee15d0"
    }
]

[
    {
        "Id": "1",
        "Doc_Id": "858E013C-5775-4FDF-AA1E-2C84053EE39F",
        "Name": "TextBox1",
        "FriendlyName": "TextBox1",
        "Read": "Grant",
        "ReadRule": "0a2e3c0e-ad8f-4f75-9160-cfd9827ac894",
        "Update": "Grant",
        "UpdateRule": "ecad3cf4-104f-44dc-b815-de039f3a0396"
    },
    {
        "Id": "2",
        "Doc_Id": "858E013C-5775-4FDF-AA1E-2C84053EE39F",
        "Name": "TextBox2",
        "FriendlyName": "TextBox2",
        "Read": "Grant",
        "ReadRule": "81e0e9ef-09f7-4c25-a58e-d5fdfbd4c2ba",
        "Update": "Grant",
        "UpdateRule": "2047f662-c881-413b-a1f9-69f15bf667fc"
    }
]

但是您不能连接两个 JSON 字符串。准确地说出在这样的连接之后您收到的不仅仅是一个 JSON 字符串。

我建议您验证 http://www.jsonlint.com/ 中的 JSON 字符串.只需剪切并粘贴您需要验证的数据,然后单击“验证”按钮即可。

关于c# - 无效的 Json 原语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3422953/

相关文章:

c# - 重定向错误 401.2 未授权

c# - 当前上下文 ASP.NET MVC5 中不存在名称 'Model'

ios - 如何使用 php web 服务成功登录并移动到另一个 View

c# - Page.IsPostBack 的安全实现?

c# - 覆盖方法时无法更改返回类型,使用泛型时出错

c# - Web 服务的 XML 结果

java - 打开Api $ref以使用url

python 和json.dump : how to make inner array in one line

c# - 如何在 C# 中测试与未知 Web 服务的连接?

c# - 在 ASP.NET Core Web Api 中发布流