javascript - 处理未知格式的 JSON

标签 javascript json properties

服务通过 JSON 提供以下信息

{"errors":{"subject":"foobar"}}

以及此错误数组中的其他元素

或者

{"ok":{"subject":"foobarfoobar"}}

以及这个 ok 数组中的其他元素

所以总是两者之一存在,而不是同时存在。任何一个不存在,我总是会收到访问错误,因为属性当然不存在

我完全不知道如何处理这个结果。我总是得到“不能......未定义”:

我目前拥有:

if (data[0].hasOwnProperty("status")) {
        alert('ddd');
}

如果提供了错误或正常,正确的测试方法是什么?

更新 blex 是对的:但在服务器端使用: echo json_encode( array('errors' => $result['errors']) ); 这是否意味着错误已经是数组的第一个元素?为什么这被视为对象属性?

解决方案/学习: 小心PHP!如上所述,echo json_encode( array('errors' => $result['errors']) ); 不会导致将其编码为 JSON 数组。我误解和监督的是, { 是对象的格式/符号,而不是数组的格式/符号。因此,要成为一个数组,它必须是 [所以最终 PHP 确实将关联数组编码为普通对象属性而不是数组。这是我错误的假设

最佳答案

var x = { "errors": { "subject": "foobar" } };
    //var x = { "ok": { "subject": "foobarfoobar" } };
    if (x.errors) {

    } else if (x.ok) {

    }

关于javascript - 处理未知格式的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29235574/

相关文章:

iOS。是否可以覆盖远程 json 文件的内容或将其替换为新文件?

python - @property 装饰器在 Python 中是如何工作的?

python - 属性创建函数

javascript - 用空字符串替换元素的单词

javascript - ng-annotate 控件依赖名称

ios - objective-c :根据字典错误制作json对象。字典值只能是字符串

C# 基于另一个属性值的不同属性

javascript - 在 setTimeout 中设置 CSS 不更新

javascript - 使用 noConflict jQuery 将 jQuery UI 包含在 requireJS 中

json - Jackson with JAXB - 抽象类型实例化