화면에 json 코드가 보여진다고 다 만들어진 것이 아니었습니다.
예를 들어 다음과 같은 json을 만들어주는 페이지가 있다고 할 때,
[{ "symbol": "ABC", "price": 96.204659543522, "change": -1.6047997669492 },
{ "symbol": "DEF", "price": 61.929176899084, "change": 0.22809544419493 }]
위 json을 만들어주는 코드를 jsp로 짜고 출력했더니 화면에 똑같이 나왔습니다. 그런데 계속 파싱에러 ㅡ.ㅡ
이상해서 받은 거 그냥 뿌렸더니 html 코드랑 섞여 나오더군요.
중요한 건 contentType을 text/html이 아니라 text/javascript로 해주는 것이었습니다.
이걸 실수해서 괜히 엄한 코드 디버깅하며 쫓아가며 겨우뚱 했네요 ㅎㅎ
컨텐트 타입을 자바스크립트로 하면 웹에 뿌려지는 것이 아니라 보통은 다운로드됩니다.
참고로 위 json 만드는 JSP 소스를 싣습니다. (구글 코드에 있는 php 예제를 단순히 jsp로 바꾼 겁니다.)
<%@ page language="java" contentType="text/javascript; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@page import="java.util.Random"%>
<%
final double MAX_PRICE = 100.0; // $100.00
final double MAX_PRICE_CHANGE = 0.02; // +/- 2%
double price;
double change;Random random = new Random();String q = request.getParameter("q");out.print("[" + "");
if(q != null){
String[] symbols = q.split(" ");
for(int i=0; i<symbols.length; i++){
price = random.nextDouble() * MAX_PRICE;
change = price * MAX_PRICE_CHANGE * (random.nextDouble() * 2.0 - 1.0);
out.print("{" + ""); out.print("\"symbol\":\"" + symbols[i] +"\"," + ""); out.print("\"price\":" + price +"," + "");
out.print("\"change\":" + change +"" + ""); out.print("}" + "");
if(i < symbols.length - 1)
out.print("," + "");
}
}
out.print("]" + "");
%>
'웹 개발' 카테고리의 다른 글
Entry의 발자취 : Etag (0) | 2009.01.30 |
---|---|
proxy server를 apache의 mod_proxy를 이용해서 해결하기. (0) | 2009.01.16 |
다른 사이트에서 json을 받기 위한 JSON with padding. (0) | 2009.01.15 |
실버라이트 Silverlight 2.0이 플래쉬보다 좋은 점?! (0) | 2008.12.27 |
또 다른 웹 언어 ASP.NET이랑 만나봤습니다. (0) | 2008.12.26 |