我正在使用org.json类将XML消息转换为JSON,并且转换工作正常但是转换后的JSON消息具有root和row元素,如下面的屏幕截图1所示,并且我们要求有一个没有任何根和行的JSON消息如屏幕截图2所示
我尝试了不同的方式,但总是不成功
XML转换为JSON消息
要求JSON消息包含root和row,JSON消息应该只有“CompanyDetails”
下面是我用来转换为读取incomming XML消息并成功将其转换为JSON消息的java代码,现在尝试只读取“CompanyDetails”并忽略root和row元素 对于我在做什么错误以获得所需的JSON消息的任何建议表示赞赏
import java.io.InputStream;
import java.io.OutputStream;
import org.json.JSONObject;
import org.json.XML;
import com.sap.aii.mapping.api.AbstractTransformation;
import com.sap.aii.mapping.api.StreamTransformationException;
import com.sap.aii.mapping.api.TransformationInput;
import com.sap.aii.mapping.api.TransformationOutput;
public class XML2JSON extends AbstractTransformation {
@Override
public void transform(TransformationInput transformationInput, TransformationOutput transformationOutput)
throws StreamTransformationException {
InputStream inputStream = transformationInput.getInputPayload().getInputStream();
OutputStream outputStream = transformationOutput.getOutputPayload().getOutputStream();
try {
byte[] buf = new byte[inputStream.available()];
inputStream.read(buf);
JSONObject xmlJsonObj = XML.toJSONObject(new String(buf, "utf-8"));
String jsonPrettyPrintString = xmlJsonObj.toString(4);
byte[] bytes = jsonPrettyPrintString.toString().getBytes("UTF-8");
outputStream.write(bytes);
} catch (Exception e) {
getTrace().addDebugMessage("Exception while writing OutputPayload: IOException", e);
throw new StreamTransformationException(e.toString());
}
}
}
答案 0 :(得分:0)
此行之后
JSONArray xmlJsonArr = xmlJsonObj.getJSONArray("root")
.getJSONObject(0)
.getJSONArray("row");
您需要继续将对象解析为行
xmlJsonArr
然后将libsasl2
写入文件
不清楚根目录中是否有多个对象,但如果是,则需要遍历根数组的对象,然后构建自己的所有内部行对象的JSONArray