繁体   English   中英

如何将嵌套主体添加到 fetch()

[英]How to add nested body to fetch()

如何将嵌套主体添加到fetch() function?

我有这个身体:

{
                "locations": [
                    {
                        "latLng": {
                            "lat": 123,
                            "lng": 123
                        }
                    },
                    {
                        "latLng": {
                            "lat": 123,
                            "lng": 123
                        }
                    }
                ]
            }

我尝试使用此代码,但它返回我SyntaxError: Unexpected token o in JSON at position 1

fetch(url, {
        method: "post",
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: {
                "locations": [
                    {
                        "latLng": {
                            "lat": 53.438679,
                            "lng": 14.520770
                        }
                    },
                    {
                        "latLng": {
                            "lat": 53.450439,
                            "lng": 14.536400
                        }
                    }
                ]
            }
    });

用于fetch的 init object 的body可以是以下之一: BlobBufferSourceFormDataURLSearchParamsUSVString (字符串)或ReadableStream object。 MDN |规范

你没有给它任何这些东西。 你给它一个普通的 object。 如果你想发送JSON ,你需要给它一个字符串:

fetch(url, {
    method: "post",
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
// −−−−−−−^^^^^^^^^^^^^^^
            "locations": [
                {
                    "latLng": {
                        "lat": 53.438679,
                        "lng": 14.520770
                    }
                },
                {
                    "latLng": {
                        "lat": 53.450439,
                        "lng": 14.536400
                    }
                }
            ]
        })
// −−−−−−^
});

您收到特定错误的原因是,由于您提供的内容不是它所期望的内容之一,因此fetch正在将其转换为字符串,就像您String(yourObject)一样。 在一个普通的 object 上,除非你已经做了一些事情来覆盖它(你在你的例子中没有这样做),结果是"[object Object]" ,这是无效的 JSON 在object之后的o [


请记住:JSON 是用于数据交换的文本符号 (更多在这里。)如果您正在处理 JavaScript 源代码,而不是处理字符串,那么您就不是在处理 JSON。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM