我正在嘗試決議并從 URL 獲取資料,但出現如下錯誤:
Unexpected token < in JSON at position 0
URL 包含這樣的資料:
<wfs:FeatureCollection xmlns="http://www.opengis.net/wfs" xmlns:wfs="http://www.opengis.net/wfs" xmlns:gml="http://www.opengis.net/gml" xmlns:kict="kict" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://192.168.0.70:28080/geoserver/schemas/wfs/1.0.0/WFS-basic.xsd kict http://192.168.0.70:28080/geoserver/wfs?service=WFS&version=1.0.0&request=DescribeFeatureType&typeName=kict:v_plans_photo">
<gml:boundedBy>
<gml:null>unknown</gml:null>
</gml:boundedBy>
<gml:featureMember>
<kict:v_plans_photo fid="v_plans_photo.fid-400b9b06_17e425c6260_-1a99">
<kict:rownum>61689</kict:rownum>
<kict:plan_id>6178a7a0974e58001ac90ac5</kict:plan_id>
<kict:cmo>5c38212c23b65b0d045d2de8</kict:cmo>
<kict:cmo_str>5c38212c23b65b0d045d2de8</kict:cmo_str>
<kict:plan_name/>
<kict:plan_cn>??? ????</kict:plan_cn>
<kict:opert_ty>B1</kict:opert_ty>
<kict:operTy>B1</kict:operTy>
<kict:opert_sttus>A4</kict:opert_sttus>
<kict:opert_plan_cn>??? ????</kict:opert_plan_cn>
<kict:create_at_year>2021</kict:create_at_year>
<kict:create_at_month>10</kict:create_at_month>
<kict:create_at_week>43.0</kict:create_at_week>
<kict:created_at>2021-10-27T01:13:04.557Z</kict:created_at>
<kict:created_by>??_???002</kict:created_by>
<kict:cvpl_ty>5cfda3bab615b60845c79dda</kict:cvpl_ty>
<kict:acmslts_id>6178a89e974e58001ac90b02</kict:acmslts_id>
<kict:cvpl_ty_code>900900</kict:cvpl_ty_code>
<kict:cvpl_ty_nm>???</kict:cvpl_ty_nm>
<kict:cvpl_name>???</kict:cvpl_name>
<kict:cmo_org_code>1613208</kict:cmo_org_code>
<kict:cmo_grp_nm>???</kict:cmo_grp_nm>
<kict:cmo_code>22</kict:cmo_code>
<kict:cmo_nm>?????????</kict:cmo_nm>
<kict:cmoNm>?????????</kict:cmoNm>
<kict:photo_type>??</kict:photo_type>
<kict:begin_lat>37.7164584026444</kict:begin_lat>
<kict:begin_lon>128.987696737366</kict:begin_lon>
<kict:photo_lat>37.7161098</kict:photo_lat>
<kict:photo_lon>128.9880585</kict:photo_lon>
<kict:geom>
<gml:Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<gml:coordinates xmlns:gml="http://www.opengis.net/gml" decimal="." cs="," ts=" ">128.9880585,37.7161098</gml:coordinates>
</gml:Point>
</kict:geom>
<kict:photo_url>http://hms.molit.go.kr:9080/api/uploads/2021/6178a7a0974e58001ac90ac5_202110271017147661635297434478.png</kict:photo_url>
<kict:store_path>uploads/2021/6178a7a0974e58001ac90ac5_202110271017147661635297434478.png</kict:store_path>
<kict:photo_filename>6178a7a0974e58001ac90ac5_202110271017147661635297434478.png</kict:photo_filename>
<kict:photo_size>1122621</kict:photo_size>
</kict:v_plans_photo>
</gml:featureMember>
</wfs:FeatureCollection>
我只是用來fetch決議和獲取如下資料:
let url = "/geoserver/wfs?service=WFS&version=1.0.0&request=GetFeature&typeName=kict:v_plans_photo&srsName=EPSG:4326&maxFeatures=10000&format_options=callback:getJson&cql_filter=INTERSECTS(geom, POINT (128.9880585 37.7161098))"
if (url) {
fetch(url, {
headers : {
'Accept': 'application/json'
}
})
.then(response => response.json())
.then((response) => {
console.log(response)
},
(error) => {
this.setState({
isLoaded: true,
error
});
console.log(`fetch failed: ${this.state.error}`)
}
)
}
如何使用從該 URL 獲取資料fetch?
uj5u.com熱心網友回復:
它拋出這樣的錯誤是因為您正在嘗試決議非 json 資料型別。回應資料實際上是一個 XML。您必須首先決議文本,然后決議 XML。
參考這個 - https://codetogo.io/how-to-fetch-xml-in-javascript/
uj5u.com熱心網友回復:
訪問此頁面以獲取詳細資訊 -
Response 介面的 json() 方法接受一個 Response 流并將其讀取完成。它回傳一個promise,該promise 決議為將正文文本決議為JSON 的結果。
請注意,盡管方法名為 json(),但結果不是 JSON,而是將 JSON 作為輸入并對其進行決議以生成 JavaScript 物件的結果。
如您所見, json() 將 JSON 格式作為輸入,然后對其進行決議,因為您的資料不是 JSON 格式,您一定會收到以下錯誤
Unexpected token < in JSON at position 0
您的結果是 XML 格式。嘗試以下
let url = "/geoserver/wfs?service=WFS&version=1.0.0&request=GetFeature&typeName=kict:v_plans_photo&srsName=EPSG:4326&maxFeatures=10000&format_options=callback:getJson&cql_filter=INTERSECTS(geom, POINT (128.9880585 37.7161098))"
if (url) {
fetch(url, {
headers : {
'Accept': 'application/json'
}
})
.then(response => response.text())
.then(response => {
const parser = new DOMParser();
const xml = parser.parseFromString(data, "application/xml");
console.log(xml);
},
(error) => {
this.setState({
isLoaded: true,
error
});
console.log(`fetch failed: ${this.state.error}`)
}
)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/407197.html
標籤:
