【问题标题】:How to validate JSON having multiple root elements如何验证具有多个根元素的 JSON
【发布时间】:2015-09-07 17:19:25
【问题描述】:

我有一个code,它以以下格式构建file。

{"swap":1,"si":11},{"system":1,host:"new"},{"Cpu":1}

如果我验证此 file 数据,我会收到以下错误:

第 4 行解析错误:

...": 1, "si": 11},{ "系统": 1, ---------------------^ 期待“EOF”

如何解决这个问题?

【问题讨论】:

  • 不能给它一个根元素的原因是什么?
  • 你能发布一些你的代码吗?此外,拥有多个根元素不是有效的 JSON,因此解析应该中断
  • 在 JSON 中,每个键都是双引号。您的 json 在主机键处缺少双引号。 {“系统”:1,“主机”:“新”}

标签: c json json java json


【解决方案1】:

在构建时将这些 Objects 包装到 JsonArray 中。然后在 中遍历array。

【讨论】:

    【解决方案2】:

    每个键都被双引号"key"。您的在主机密钥处缺少双引号。确保你写的是格式正确的

    { "system": 1, "host": "new" }
                   ^    ^
    

    【讨论】:

      【解决方案3】:

      我不是 JSON 专家,但我认为您想更改类似 JSON 的数组值

      [{"swap":1,"si":11},{"system":1,host:"new"},{"Cpu":1}]
      

      插入

      {"swap":1,"si":11},{"system":1,host:"new"},{"Cpu":1}
      

      【讨论】:

        【解决方案4】:

        即使您有复杂的对象,您也可以使用此自定义函数。

        static getParsedJson(jsonString) {
            const parsedJsonArr = [];
            let tempStr = '';
            let isObjStartFound = false;
            for (let i = 0; i < jsonString.length; i += 1) {
                if (isObjStartFound) {
                    tempStr += jsonString[i];
                    if (jsonString[i] === '}') {
                        try {
                            const obj = JSON.parse(tempStr);
                            parsedJsonArr.push(obj);
                            tempStr = '';
                            isObjStartFound = false;
                        } catch (err) {
                            // console.log("not a valid JSON object");
                        }
                    }
                }
                if (!isObjStartFound && jsonString[i] === '{') {
                    tempStr += jsonString[i];
                    isObjStartFound = true;
                }
            }
            return parsedJsonArr;
        }
        

        【讨论】:

          猜你喜欢
          • 2020-04-05
          • 2013-01-05
          • 1970-01-01
          • 2012-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-06
          相关资源
          最近更新 更多