REST API로 JSON 데이터 읽기
문제
일부 웹사이트는 나머지 데이터를 읽기 위한 API이며 종종 응답은 JSON 형식의 텍스트입니다. 이를 JMP에 적용하려면 어떻게 해야 합니까?
해결책
다음은 meetup.com REST API . 웹 페이지 읽기의 기본값인 일반적인 "GET" 메서드를 사용하므로 비교적 간단합니다. 보다 정교한 메시지는 다른 접근 방식이 필요한 "POST" 방법을 사용합니다. GET 요청을 사용하면 입력이 URL 자체에 추가됩니다.
my key = load text file("meetupkey.txt"); // I stored my key in a text file<BR />event id = "246678392"; // the meetup id at the end of the event's URL<BR /><BR />url = "https://api.meetup.com/2/rsvps?key=" || my key || "&event_id=" || event id;
s = load text file( url ); // s contains the JSON result as a big string<BR /><BR />// We could store that in a file and then open the file, but here's a shortcut.<BR />// The Open() function can read data directly from a blob -- you just have to tell it the file type
b = char to blob(s);
dt = open(b, "JSON");<BR />// JMP interprets the JSON structured tree into a flat data table, with surprisingly good results.
논의
데이터를 읽은 후 정리 작업을 수행하고 다음과 같은 편리한 열을 만듭니다.
dt << New Column("reply time", formula(:results.mtime/1000 + 01Jan1970), format("ddmonyyyy"));
dt << New Column("count", formula(if(:results.response=="yes", :results.guests + 1, 0)));
이것을 스크립트에 포함하면 필요에 따라 데이터를 쉽게 새로 고칠 수 있습니다. 이제 탐색을 할 준비가 되었습니다..
Re: REST API로 JSON 데이터 읽기이것이 튜토리얼 비디오로 바뀔 수 있는 기회가 있습니까?
Re: REST API로 JSON 데이터 읽기환상적입니다.
JMP 스크립트 섹션에 더 많은 [구체적인] 예제를 게시할 예정입니다.
-브라이언
Re: REST API로 JSON 데이터 읽기안녕 브라이언,
매우 감사합니다.양식을 성공적으로 보내고 받을 수 있으며 이를 내 스크립트에 적용하려고 합니다.
건배,
하워드
Re: REST API로 JSON 데이터 읽기
헤이 하워드,
일반적으로 "POST" HTTP 메서드를 사용하면 양식 데이터를 "게시"하는 것입니다.
정확한 메서드는 "POST", "PUT", "GET" 등을 해석하여 특정 사항을 암시할 수 있으므로 웹 서비스의 RestAPI에 의해 정의됩니다. (이와 같이: https://www.w3schools.com/tags/ref_httpmethods.asp )
예에서와 같이 HTTP 요청을 사용하면 쿼리 문자열이 URL의 일부가 됩니다(예:
" http://httpbin.org/post?key1=value1&key2=value2 ")
귀하의 예에서 데이터를 게시하려면 다음을 수행하십시오.
url = "http://httpbin.org/post";
request = New HTTP Request(
URL( url ),
Method( "Post" ),
Form(
Fields([[
"key1" => "value1", "key2" => "value2"
]])
)
);
json = request << Send();
jsl_json = Parse JSON( json );
Write( jsl_json );
쿼리 문자열이 Form으로 대체됩니다.
양식에는 필드와 파일이라는 두 항목이 있으며 둘 다 연관 배열입니다.
또는 다음과 같이 코드를 작성할 수 있습니다.
url = "http://httpbin.org/post";
my_fields = [=>];
for(i = 1, i <= 2, i++,
my_fields["key" || Char(i)] = "value" || Char(i);
);
request = New HTTP Request(
URL( url ),
Method( "Post" ),
Form(
Fields(my_fields)
)
);
json = request << Send();
jsl_json = Parse JSON( json );
Write( jsl_json );
양식에 대한 키/값 쌍을 생성하려는 방법에 따라 다릅니다.
-브라이언
Re: REST API로 JSON 데이터 읽기JSON 형식의 표 데이터로 POST 요청을 제출하려고 합니다.다음 코드는 GET 요청과 유사하게 인수로 입력을 사용하여 POST 요청을 에코합니다.
url = "http://httpbin.org/post";
request = New HTTP Request(
URL( url ),
Method( "Post" ),
Query String(
[[
"key1" => "value1", "key2" => "value2"
]]
)
);
json = request << Send();
jsl_json = Parse JSON( json );
Write( jsl_json );
그러나 JSON 형식의 데이터로 POST하고 싶습니다.다음은 Mac OSX 터미널에서 수행하는 방법입니다.
curl -d '{"table1":[{"id": 1,"value1": 10,"value2": 11},{"id": 2,"value1": 20,"value2": 21}],"table2":[{"id": 3,"value1": 30,"value2": 31},{"id": 4,"value1": 40,"value2": 41}]}' -H "Content-Type: application/json" -X POST http://httpbin.org/post
"쿼리 문자열"을 교체해야 할 것 같지만 교체 대상에 대한 설명서가 명확하지 않습니다.모든 지침을 주시면 감사하겠습니다.
미리 감사드립니다!
하워드
Re: REST API로 JSON 데이터 읽기시원한!
이것은 내가 사용한 코드보다 쉽습니다. 여기 . JMP 13에서는 다음과 같이 간단할 수 있습니다.
Open( "http://api.open-notify.org/iss-now.json?r=" || Char( Random Integer( 1, 1e6 ) ), "JSON" );
International Space Station positionInternational Space Station position국제 우주 정거장 위치
난수 트릭에 유의하십시오. URL은 매번 다르게 표시되므로 오래되고 오래되고 캐시된 데이터 사본을 얻지 못합니다. 끝에 있는 ?r=은 r이라는 매개변수를 시작합니다. 이 웹 사이트는 아무것도 필요하지 않습니다. "?time=3:00&place=space"와 같은 명명된 매개변수가 있는 경우 사이트에서 무시할 매개변수 이름을 추가할 수 있습니다. "?time=3:00&place=space&r=" (여기서 임의의 숫자에 고정).
JMP 12에서는 "{\!"iss_position\!"라는 JSON 문자열을 얻을 수 있습니다. {\!"위도\!": \!"-41.6934\!", \!"경도\!": \!"-140.2738\!"}, \!"타임스탬프\!": 1518704338, \!"메시지\!": \!"성공\!"}"