JSON 입력을 편집하고 POST를 통해 다른 시스템에 다시 제출해야하는 Java 프로그램을 작성 중입니다. 내 코드에서 새 비디오 유형으로 JSONArray를 업데이트하는 키 : 값 쌍이있는 HashMap을 사용합니다. 코드는 정상적으로 작동하지만 내 코드는 다른 순서로 출력됩니다. 왜 그런지 모르겠습니다. 내 자바 코드로 코드를 처리 할 때JSON 개체의 요소 정렬?
는 JSON 출력은 다음과 같습니다
이{
"TransformType": {
"processType": "encode",
"encodeOptions": [
{
"types": [
"MPEG"
],
"title": "Convert to MPEG"
}
]
}
}
내 코드는 매우 간단합니다 : 시스템이 기대
{
"TransformType": {
"encodeOptions": [
{
"types": [
"MPEG"
],
"title": "Convert to MPEG"
}
],
"processType": "encode"
}
}
출력은 다음과 같습니다 :
HashMap<String,String> newTypesMap = new HashMap<String,String>();
if (TransformTypeObj.has("encodeOptions")) {
JSONArray encodingOptionsArr = TransformTypeObj.getJSONArray("encodeOptions");
for(int i = 0; i < encodingOptionsArr.length(); i++) {
JSONObject encodeOptObj = encodeOptionsArray.getJSONObject(i);
JSONArray typesArr = encodeOptObj.getJSONArray("types");
for (int h = 0; h < typesArr.length(); h++) {
String oldtype = typesArr.getString(h).toString();
String newType = newTypesMap.get(oldtype);
typesArr.put(h, newType);
}
}
}
제 3 자 시스템을 편집하거나 볼 수는 없습니다. 중요하다. Java 출력을 '올바른'형식으로 편집하고 수동 게시물을 작성했으며 시스템에서이를 수용합니다. Java 코드 출력을 사용하려고하면 다음과 같은 오류 메시지가 나타납니다.
Java.lang.RuntimeException: com.jacksonmedia.data.api.marshalling.MarshallingException: array element type mismatch
나는 개체의 순서와 관련이 있다고 생각합니다. 어떻게 'processType'JSONString을 TransformType 객체의 첫 번째 요소로 만들 수 있습니까 ??
일부 관련 코드가 누락되었습니다. 이 코드는 내부의 ""encodeOptions "'배열을 작성하기위한 코드 일 뿐인 것처럼 보입니까? – pb2q