programing

JSONObject.toString: 슬래시를 이스케이프하지 않는 방법

oldcodes 2023. 2. 23. 23:03
반응형

JSONObject.toString: 슬래시를 이스케이프하지 않는 방법

JSON으로 날짜를 보내야 합니다.날짜 문자열은 다음과 같습니다.

"2013/5/15"

대신,JSONObject.toString는 다음과 같이 그것을 이스케이프합니다.

"2013\ /5\ /15"

스크립트 태그 내의 json 스트링을 허용하기 위해 이루어지는 것으로 알고 있습니다.JSON: 슬래시는 이스케이프됩니까?

하지만 저 같은 경우에는 필요 없어요.실제로 서버는 오류를 반환하고 있습니다.서버가 이 문제를 처리하고 있지 않아 서버를 수정할 수 없기 때문에 모바일 클라이언트 코드로 수정해야 합니다.

내가 할 수 있는 건String.replaceserialize 후, 그러나 실제로 "\ /" 문자열을 JSON의 다른 부분에 포함시키고 싶다면 어떻게 해야 할까요?

슬래시를 피하지 않고 JSON 개체를 직렬화하는 방법이 있습니까? (가능한 경우 아무것도 피하지 않고)

서버에 송신하기 전에, 시리얼화된 문자열의 이스케이프 슬래시를 교환하는, 신속하고 더러운 방법을 선택했습니다.다행히 JSONObject도 백슬래시를 피할 수 있기 때문에 테이프를 풀어야 합니다."\ /" 를 의도적으로 보내는 경우 이스케이프된 문자열은 "\\/" 이 되며 치환 결과는 원래 문자열이 됩니다.

이 동작은 JSONStringer.java에 하드코드되어 있습니다.메서드를 참조해 주세요.private void string(String value), 회선 302+ 입니다.

클래스를 복사할 수 있어야 합니다.JSONStringer사용자 고유의 버전을 구현합니다.value(Object)(227+행).그런 다음 유틸리티 클래스에 JSONObject.toString() 버전을 구현하고 원본이 아닌 자체 JSONStringer를 사용합니다.

편집: value()가 액세스할 수 없는 value()보다 먼저 개인 메서드를 호출하기 때문에 JSONStringer를 하위 분류하는 것은 쉽지 않습니다.

jsonObjSend.toString().replace("\\\\","")

나한테는 통했어좀 지저분한 속임수지만 다른 해결책은 없는 것 같다.

adat URI "data:image/png;base64,..."로 인코딩된 이미지의 데이터를 처리할 때 JSONObject "put"과 유사한 문제가 있었습니다. put 함수는 형식을 "data:image/png;base64,..."로 변경하기 위해 슬래시를 하나 더 추가합니다. 문제의 원인은 "jO" 내의 문자열 값 검사인 것으로 보입니다.slashs를 추가합니다.함수를 오버로드하거나 클래스를 확장할 수도 있지만 가장 쉬운 방법은 JSONObject의 toString() 함수를 호출한 후 guid 등의 고유 문자열을 추가하고 URI 문자열로 대체하는 것입니다.

JSONObject userJson = new JSONObject(); 
String myimageUri = "data:image/png;base64,XXXDATAXXX";
userJson.put("imageUri", "b0c8f13d-48b1-46b4-af28-4e2d8004a6f8");
userJson.toString().replace("b0c8f13d-48b1-46b4-af28-4e2d8004a6f8", myimageUri);

제가 사용했을 때 비슷한 슬라시가 생겼어요.

val dateString = Gson().toJson(dateObject).toString()

이 json을 역직렬화해야 합니다.

JSONObject(dateString)

문제는 수입품에 있습니다.

다음 Import 사용:-

import org.json.JSONException;
import org.json.JSONObject; 

import org.json.simple.JSONObject;

그건 작동할 것이다.

이미지 참조

언급URL : https://stackoverflow.com/questions/16563579/jsonobject-tostring-how-not-to-escape-slashes

반응형