2014-05-22 3 views
3

JsonObject에 저장된 원시 바이트를 가져 와서 InputStream 객체로 바꾸는 방법을 알아 내려고하고 있습니까? JsonObject에서 InputStream 객체를 생성하는 방법

나는이 같은 수 있습니다 생각 :

InputStream fis = new FileInputStream((File)json.getJsonObject("data")); 

부여 나는 그것을 밖으로 시도하지 않은,하지만 단지 사람이 어떤 경험이 있다면 알고 싶어하고 그것을 할 수있는 좋은 방법을 알고? 당신이 바이트를 원하는 경우

+0

그냥 당신이 이제까지 당신이 toString'에에서 OutOfMemory 오류가 발생할 수 있습니다 매우 큰 JSON 개체의 콘텐츠를 스트리밍 할 상황으로 실행하면 경우에()'메소드 호출은 mutliple ByteArrayInputStreams를 사용 여기에 게시] (http://stackoverflow.com/a/7099314/1377895) –

답변

7

당신은 String 표현으로 JSONObject을 변환 할 수 있습니다, 다음 변환 해당 문자열을 InputStream에 입력하십시오.

질문의 코드는 File으로 변환되는 JSONObject가 있지만, 의도 한대로 작동하는지 확실하지 않습니다. JSONObject에 대한 toString() 방법은 java.lang.Object 클래스의 하나보다 우선

String str = json.getJSONObject("data").toString(); 
InputStream is = new ByteArrayInputStream(str.getBytes()); 

참고 : 다음은, 그러나, (현재 메모리에서 재현) 내가 전에했던 일이다. Javadoc에서

:

반환 값 : 객체의 인쇄 가능한, 디스플레이, 휴대용, 전송 가능한 표현으로 시작 {(왼쪽 중괄호)와로 끝나는} (오른쪽 중괄호). 이에 [prestented로

+0

당신의 해결책은 작동하지만, 당신이 당신의 휴식 전화에 파일을 전달하는 한 질문이 있는데 왜 자동으로 변환합니까? InputStream에 자바쪽에? –

+1

'String'은 일련의 바이트로 변환되어 차례로'InputStream'으로 변환됩니다. –

5

json.toString().getBytes() 

를 사용하거나 savedFile이 json.toString가 포함 된 파일을 작성하고

InputStream fis = new FileInputStream(savedFile); 
관련 문제