首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到了更多的文本,但是JSONLint说JSON验证正确

找到了更多的文本,但是JSONLint说JSON验证正确
EN

Stack Overflow用户
提问于 2018-02-23 19:39:55
回答 1查看 1.2K关注 0票数 0

在很少情况下,当接收到消息时,“完成反序列化对象后在JSON字符串中找到其他文本”。我做的第一件事是使用JSONLint修复我的一些JSON结构错误。

然而,这一次,林特说json是有效的,我看不出问题出在哪里。(由于我不控制数据源,所以我需要将其序列化到一个泛型对象,然后遍历该对象。-这可能是我的错误吗?)

我正在用统一专用的Newtonsoft.Json (JsonNet)进行反序列化。

代码语言:javascript
复制
object resultData = JsonConvert.DeserializeObject<object>(jsonString);

我遗漏了什么?

JSON字符串

代码语言:javascript
复制
"{\"statements\":[{\"id\":\"14b6382c-ddb9-44c5-a22c-a133cec50711\",\"actor\":{\"objectType\":\"Agent\",\"mbox_sha1sum\":\"f7f99253cf6ede467c3a5425d05bfcd96e524595\",\"name\":\"My Name\"},\"verb\":{\"id\":\"https://w3id.org/xapi/dod-isd/verbs/completed\",\"display\":{\"en-US\":\"completed\"}},\"result\":{\"success\":true,\"completion\":true,\"duration\":\"PT0.05S\"},\"context\":{\"contextActivities\":{\"grouping\":[{\"id\":\"http://example.com/activities/MyActivity_Grandparent\",\"objectType\":\"Activity\"}],\"parent\":[{\"id\":\"http://example.com/activities/MyActivity_Parent\",\"objectType\":\"Activity\"}]}},\"timestamp\":\"2018-02-23T19:18:34.145Z\",\"stored\":\"2018-02-23T19:18:34.145Z\",\"authority\":{\"objectType\":\"Agent\",\"account\":{\"homePage\":\"http://cloud.scorm.com\",\"name\":\"abcdef-ghijk\"},\"name\":\"Test Provider\"},\"version\":\"1.0.0\",\"object\":{\"id\":\"http://example.com/activities/MyActivity\",\"definition\":{\"extensions\":{\"https://w3id.org/xapi/dod-isd/extensions/interactivity-level\":\"3\",\"https://w3id.org/xapi/dod-isd/extensions/ksa\":\"Attitude\",\"https://w3id.org/xapi/dod-isd/extensions/category\":\"Responding\",\"http://example.com/TerminalObjective\":\"My Activity Objective\"},\"name\":{\"en-US\":\"My Activity Name\"},\"description\":{\"en-US\":\"My Activity Description\"},\"type\":\"http://adlnet.gov/expapi/activities/simulation\"},\"objectType\":\"Activity\"}}],\"more\":\"/tc/Z5R2XATQZW/sandbox/statements?continueToken=e50555fe-0c3d-4663-91c4-7f0ff7df4ccf\"}"

JSON格式,用于可读性

代码语言:javascript
复制
{
"statements": [{
    "id": "14b6382c-ddb9-44c5-a22c-a133cec50711",
    "actor": {
        "objectType": "Agent",
        "mbox_sha1sum": "f7f99253cf6ede467c3a5425d05bfcd96e524595",
        "name": "My Name"
    },
    "verb": {
        "id": "https://w3id.org/xapi/dod-isd/verbs/completed",
        "display": {
            "en-US": "completed"
        }
    },
    "result": {
        "success": true,
        "completion": true,
        "duration": "PT0.05S"
    },
    "context": {
        "contextActivities": {
            "grouping": [{
                "id": "http://example.com/activities/MyActivity_Grandparent",
                "objectType": "Activity"
            }],
            "parent": [{
                "id": "http://example.com/activities/MyActivity_Parent",
                "objectType": "Activity"
            }]
        }
    },
    "timestamp": "2018-02-23T19:18:34.145Z",
    "stored": "2018-02-23T19:18:34.145Z",
    "authority": {
        "objectType": "Agent",
        "account": {
            "homePage": "http://cloud.scorm.com",
            "name": "abcdef-ghijk"
        },
        "name": "Test Provider"
    },
    "version": "1.0.0",
    "object": {
        "id": "http://example.com/activities/MyActivity",
        "definition": {
            "extensions": {
                "https://w3id.org/xapi/dod-isd/extensions/interactivity-level": "3",
                "https://w3id.org/xapi/dod-isd/extensions/ksa": "Attitude",
                "https://w3id.org/xapi/dod-isd/extensions/category": "Responding",
                "http://example.com/TerminalObjective": "My Activity Objective"
            },
            "name": {
                "en-US": "My Activity Name"
            },
            "description": {
                "en-US": "My Activity Description"
            },
            "type": "http://adlnet.gov/expapi/activities/simulation"
        },
        "objectType": "Activity"
    }
}],
"more": "/tc/Z5R2XATQZW/sandbox/statements?continueToken=e50555fe-0c3d-4663-91c4-7f0ff7df4ccf"
}
EN

回答 1

Stack Overflow用户

发布于 2018-02-23 20:22:42

您选择的反序列化方法是在将一个著名的Json反序列化为与结构匹配的对象时使用的。在这种情况下,Json结构与System.Object类型结构不匹配,您正在尝试反序列化到。库抱怨说,Json中比System.Object结构中有更多的内容。

要解析任何Json对象,可以从Newtonsoft.Json文档中尝试一个示例

代码语言:javascript
复制
string json = @"{
  CPU: 'Intel',
  Drives: [
    'DVD read/writer',
    '500 gigabyte hard drive'
  ]
}";
JObject o = JObject.Parse(json);

您仍然需要遍历反序列化的对象。根据您想要实现的目标,寻找与Json结构匹配的.Net类(或者编写Json类)可能要好得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48955110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档