몽두
20
2019-03-07 09:44:56 작성 2019-03-07 09:46:53 수정됨
1
202

JSON Exception : Expected a ',' or '}' 오류가 뜹니다ㅠㅠ


이 오류때문에 며칠째 해결이 안되서 글 올립니다.

현재는 다른업체로 파견나와있는 상황인데  제 로컬, 저희 회사 개발서버에서는 이상없이 잘 돌아가는데

여기 운영서버(윈도우서버)에 이관했을때 오류가 뜹니다.

개발환경에 있어서는 다른 부분이 없습니다.

HTTP통신으로 데이터를 return받아 쓰고 System.out.print();로 받아오는 JSON을 찍어보면 값이 제대로 들어가있습니다.

아래는 오류내역과 코드입니다.


VehicleControlController 185번째 라인

Map<String, Object> ibpmData = apiService.getVehicleControlList(brn, paramVehicleNum);


IbpmService의 59번째줄

public Map<String, Object> getVehicleControlList(String brn, List<String> vrn) throws IOException {
		Map<String, Object> resultMap = new HashMap();
		
		try {
			bpmClient = cmd.getClient(new URL(url + "/api/realtimebybrn"), 10000);
		} catch (Exception e) {
			e.printStackTrace();
			LOGGER.error(" {} "+e.getMessage());
		}
		
		JSONObject header = new JSONObject();
		header.put("version", "1.0");
		header.put("name", "realtimebybrn");
		header.put("brn", brn);
		header.put("vrn", vrn);
		
		String contents = header.toString();
		// 59번째 줄 -> JSONObject object = excuteJson(contents);
JSONObject object = excuteJson(contents); if(object != null && object.get("success").equals(true)){ resultMap.put("results", object.get("results")); } return resultMap; }


IbpmService의 157번째줄

public JSONObject excuteJson(String contents) {
		JSONObject returnObj = null;
		long s = System.currentTimeMillis();
		try {
			JSONObject object = bpmClient.excuteJsonObject(contents);
			System.out.println(url+"//" + (System.currentTimeMillis() -s));
			System.out.println("result :> " + object);	
			returnObj = object;
		} catch (IOException e) {
			e.printStackTrace();
		} catch (JSONException e) {
			// 157번째 오류줄 exception떨어짐
			e.printStackTrace();
		}
		return returnObj;
	}


BpmClientImpl.java의 79번째 줄

public JSONObject excuteJsonObject(String contents) throws IOException {
		// 79번째 줄 -> return new JSONObject(excuteAsString(contents)); 
		return new JSONObject(excuteAsString(contents));
	}
	public String excuteAsString(String contents) throws IOException {
		return convertStreamToString(excuteAsStream(contents));
	}
	public InputStream excuteAsStream(String contents) throws IOException{
		return _execute(contents);
	}
	private InputStream _execute(String contents) throws IOException {
		HttpURLConnection conn = _connection(contents);
		try{
			return new ByteArrayInputStream(convertStreamToString(conn.getInputStream()).getBytes());
		}finally {
			if(conn != null)
				conn.disconnect();
		}
	}

위의 79번째줄 코드에서 Sysout으로 찍으면

{"results":[{"gpsD":"135","dayDrvSec":"0","fuleConsume":"0","dState":"0","vrn":"서울12아1234","temp1":-5555,"temp2":-5555,"gpsX":"127004951","gpsY":"35875504","address":"전라북도 김제시 백구면","brn":"1231231234","dayDrvKm":"79","dataTime":1551917836000}],"resultCode":0,"success":true,"version":"1.0"}

라고 데이터가 잘받아지는것까지 확인했고 JSON형태로 잘 들어왔는지 검증까지 했습니다!

어떻게 해결할 수 있을지 잘 모르겠습니다ㅠㅠ


0
0
  • 답변 1

  • onimusha
    7k
    2019-03-07 09:50:06
    받아온 json 문자열의 185 번째 character 를 확인해보세요
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.