programing

Axios - JSON 응답을 읽는 방법

lastmoon 2023. 3. 23. 23:06
반응형

Axios - JSON 응답을 읽는 방법

악시오스 0.17.1

.then(function (response) {
                console.log(response);
                //console.log(response.status);
                //It is an error -> SyntaxError: Unexpected token u in JSON at position 0 
                console.log(JSON.parse(response.data.error));
                console.log(response.data.error); //undefined.

응답의 console.log는 다음과 같습니다.

error": 을 입력해야 data: "{" error" : 」」 、 」」」 。 NULL 。
NULLparam} param, : ["isPipe" : protected] = > NULL } param, 상 203, " {---request 요청: {--}."XSRF-TOKEN", "{…}, ": {…}, ": {…}, {adapter:}, transformRequest: {…}, ": 0, xsrfCookieName: "XSRF-TOKEN, …" " 오류: ": {…}: "Http\Response) #32(5) {syslog ["status": protected](200 ["protected]=> int(200) syslog ["reasonPhrase": protected]"param ["protected]=> param string(0) "parames ["protocolVersion":protected) "1.1"param protected> 캐3 (3) "1.1" 캐 [ " complete " : protected ] ( Slim \ = > slim ( \ ) \ ) (1){ slimHttp \헤더) #33 (1) {http}
" " : protected ]> array( " content - " ) ] > adray ( 1 ){ data [ " : protected " ]= > > adray ( 1 )
2 {parames array (1 {parames [0]=> parames array (2) {parames ["value"]=> parames array (1) {parames [0]=> parames
string(24) "text/parames; charset= } UTF-8" } }
['본문']=본문 본문]=>콘텐츠 문자열(12) "Content-Type" }콘텐츠 }["본문:보호됨]> ( Slim \ = > 오슬슬 ( 슬슬\ )Http \ Body ) # 31( 7 ) { body
: 유형의 을 삭제["stream":protected]=> 유형(stream)의 자원(59)을 삭제합니다.
NULL ["":]=> NULL ["filename":protected]=>nothernet NULL]
" : ][" : ] > resign NULL ["seekable" : protected] = > > 셧다운
특수 ["size" : protected]=nULL ["isPipe" : protected]= > > 셧다운
NULL }suploads" 헤더: {content-type: "application/json;charset=utf-8"} 요청: XMLHttpRequest {onreadystchange: }, readyState: 4, 시간 초과: 0, 자격 증명: false, 업로드: XMLHtpRequestUpload, ...} 상태: 203텍스트: "권한 없는 정보" proto: 객체

JSON.parse(response.data)와 response.data.error -> 둘 다 에러가 발생하고 있습니다.데이터를 어떻게 읽을 수 있나요?

슬림프레임워크3

$data = array('error' => 'Name must be entered with more than one character.');
        $newResponse = $response->withJson($data, 203);
        return $newResponse;

Axios에서 응답은 이미 javascript 객체로 제공되므로 해석할 필요 없이 응답 및 데이터 접근만 하면 됩니다.

서버로부터의 응답을 다음과 같이 가정합니다.

{"token": "1234567890"}

그런 다음 Axios에서 다음과 같이 액세스할 수 있습니다.

console.log( response.data.token )

이미 기술된 바와 같이 Axios는 이미 기본적으로 JSON을 반환합니다.response.data를 단순한 JS 개체로 사용합니다.

그러나 다음과 같은 통찰력을 통해 다른 사용자에게 도움이 될 수 있습니다.Axios가 응답을 문자열로 반환하는 문제가 있었습니다.조사했을 때, 서버가 무효인 JSON(스태틱 파일 서버)을 반환하고 있는 것을 알았습니다.JSON 형식을 수정하면 Axios는 문자열 대신 JSON을 다시 사용했습니다.

다음과 같이 간단하게 얻을 수 있습니다.

예:

{
    "terms": {

        "title": "usage",

        "message": "this is the usage message"

    }

}
 

응답은 "response.data" 등을 사용하여 얻을 수 있습니다.

.then(response => 
        console.log( response.data.terms.message)
        
  

건배!

콘솔 로그에 있는 것과 유사한 형식 응답을 받았는데, 문제는 .json 파일이 제대로 포맷되지 않았다는 것입니다.쉼표가 빠졌어요.json 파일을 게시하여 확인하십시오.

defualt를 .response.dataresponse

export const addPosts = () => async (dispatch) => {
await axios('https://jsonplaceholder.typicode.com/todos/1')
    .then(response => dispatch({type: postActionTypes.POSTS, payload: response.data}))}

어떤 이유에서인지 제 경우 JSON은 올바르게 포맷되었지만 문자열로 반환되었습니다.이 회피책으로 문제를 해결했습니다.

// ...
return await this.axios_instance.request<T>({
    method,
    url,
    headers,
    params,
    transformResponse: (data) => JSON.parse(data), // <----------
    data,
});

간단히 말하면, JSON.parse를 사용하여 응답을 변환하도록 명시적으로 지시했습니다.어떤 이유에서인지 이것은 효과가 있었지만, 다른 답변은 효과가 없었습니다.

나 이거 성공했어!!도움이 됐으면 좋겠다.

여기 샘플 코드가 있습니다.

try {
  const res = await axios.get("/end-point");
  console.log("JSON data from API ==>", res.data);
} catch (error) {
  // handle error
}

저도 비슷한 문제가 있었어요.다른 사람들이 지적한 바와 같이, 액시오스는 js 오브젝트로 json을 읽어 들입니다.또, 계층내에서 간단하게 이동해, 필드 데이터를 취득할 수 있습니다.

단, 저는 json을 오브젝트로 읽고 싶지 않아 문자열을 반환했습니다.파일 내의 이전 행 삭제로 인해 json 끝에 쉼표가 있는 것이 원인입니다.따라서 파일 내용은 유효한 json이 아니었고, axios는 문자열을 반환했을 뿐입니다.쉼표를 떼면 모든 게 작동했어

잘못된 구문이 없는지 json을 체크하는 것이 좋습니다.

저도 같은 문제가 있어서 데이터를 제대로 읽지 못했습니다.마침내 해결책을 찾았다.이거 먹어봐.

데이터는 다음과 같습니다.

response = [{"myname","Anup","age":23,"Education":"Graduation"}]

다음과 같은 데이터를 검색하려고 했습니다(이것은 출력을 정의하지 않았습니다).

axios('https://apiurl.com')
.then((reponse)=>{
const recieved_Data=fetchdata.data;
console.log(recieved_Data.name);
})

올바른 접근법:

axios('https://apiurl.com')
.then((reponse)=>{
const recieved_Data=fetchdata.data;
console.log(recieved_Data[0].name);
})

보시다시피 응답 received_Data[0]의 배열 인덱스 값을 통과했습니다.이것에 의해, 올바른 출력이 얻을 수 있었습니다.

이게 괜찮으시다면 저에게 투표하세요.

감사합니다!

그래서 저는 제 질문에 대한 답을 찾기 위해 이 게시물을 발견했습니다."API에 의해 반환된 json 파일의 데이터에 액세스하는 방법"그럼에도 불구하고, 결국 나에게 효과가 있었던 것은 링크가 Axios인 스택오버플로우에 대한 비슷한 질문에 대한 대답이었다. api가 404 에러를 반환해도 최종적으로 try catch에서 에러 응답을 얻는 방법.

get(,, api api api api)에 위해 .axios.get에 의해 반환된 에러 코드에 액세스하기 위해 사용한 코드가 있습니다./sanctum/csrf-cookie(응답 = > { axios.post )api/register, registerInfo) . then ( response = > { console . log ( ' ) ; } ) ;

언급URL : https://stackoverflow.com/questions/48062821/axios-how-to-read-json-response

반응형