类型不正确。预期的“对象”

The*_*heo 4 json visual-studio-code

我有这个 json,但 Visual Studio Code 在标题中给了我警告。

\n\n
[\n    {\n      "title": "Book A",\n      "imageUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ6B1bizZf6gt_7vtUZXx0cPf81u07iJf9ZPBMPn5kM_5pyIRnE",\n      "description": "Cool book!",\n      "price": "10",\n      "id": "0.9910457947149673"\n    },\n    {\n      "title": "Book B",\n      "imageUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ6B1bizZf6gt_7vtUZXx0cPf81u07iJf9ZPBMPn5kM_5pyIRnE",\n      "description": "Nice!",\n      "price": "12",\n      "id": "0.3677736742556723"\n    },\n    {\n      "id": "0.2599869075653567",\n      "title": "\xce\x91\xcf\x87\xce\xaf\xce\xbb\xce\xbb\xce\xb9\xce\xbf\xcf\x85 \xce\xa0\xcf\x8c\xce\xbb\xce\xb7\xcf\x82",\n      "imageUrl": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxMSERUTEhIWFhUXGRgZGBgWGBgYHRYZGBsaGB4YGxkYHSggGBolIBgXITEhJSkrLi4uGB8zODMtNygtLisBCgoKDg0OGBAQGi0dHh8rKy0tLSsrLS0tLSsrKy0tKy0rLS0tLS0tLS0tLS0tLS0tLS03LS0tLTcrLTc3NzcrLf/AABEIAOEA4AMBIgACEQEDEQH/xAAcAAACAgMBAQAAAAAAAAAAAAAABQQGAgMHAQj/xABGEAABAwEGBAMEBggFAgcBAAABAAIRAwQFEiExQQZRYXETIpEygbHBBxRCUqHwIzM0YnJz0eEVJILC8RayNURTVIOSoiX/xAAYAQEBAQEBAAAAAAAAAAAAAAAAAQIDBP/EACERAQEAAgIDAAMBAQAAAAAAAAABAhESIQMxQSJRkTIT/9oADAMBAAIRAxEAPwC/IQhUCEIQCELCvWaxpe8hrWiSTsEGaFjTeHAOaZBEgjcHdZIBCEIBCEIBCEIBCEIBCEIBCEIBCEIBCEIBCEIBCEIBKbzv+lQfgdLjEnDEN7k79Ej4r4mdTqOoU3YSMIJGpxbA7Kr2yyP8NgY5jsbnE43VJAxHzZHTJB0SzcR0H6OcO7T8VNpXhSdo9use/wB65lcdpfSfUpOmWhj83NIe06Fpw/hOyd0ra7EQ9hJfu1khw2g4vL26oL2qjx1UqVm/VKAlxaalToxuje52Vmr120qRe4w1jZPQAJHwq9pa+01XsFSucRBc2WsGTW68vis39OuHV5If0bXv4tnNFx81LIdWHT00VwXK7RUF3XnjY4Gk8ycJBAY45j3HNdTa4ESDkcx2KY34vmx1dz6UXxxHRspiqKgGzgwlp6A81sua/aVqzpB5bn5i0gZbTzUy8LEyvTdSqNlrhB/r3XNLJba10Wh9J4L6TgSP3vuuB2OxUtsMMMc5qe11tvFdClU8J7aofsPDJxdRGoUm237TpUxUf",\n      "description": "A cool book. Everyone should buy it!",\n      "price": "10"\n    },\n    {\n      "id": "0.8862598606325078",\n      "title": "xvbxb",\n      "imageUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ6B1bizZf6gt_7vtUZXx0cPf81u07iJf9ZPBMPn5kM_5pyIRnE",\n      "description": "xvcxv",\n      "price": "20"\n    }\n]\n
Run Code Online (Sandbox Code Playgroud)\n\n

为什么?

\n

Sla*_*cki 6

历史上,顶层JSON被认为是一个对象。不是数组或基元。

实际上,该规则的执行情况各不相同。VSCode 提醒您,您并不是在最具互操作性的意义上看待 JSON。

编辑:有各种定义 JSON 的 RFC,历史上的 RFC 通常更严格,但现在大部分已被取代。

我不知道如何找到强制执行“顶级项目是对象”规则的官方 JSON 定义。我怀疑这只是浏览器支持和其他解析器方面的现实,所以它在被适当标准化之前就成为了事实上的标准。

例如,参见: rfc4627 rfc7159 rfc8259