使用org.json的JSON格式

时间:2018-02-21 01:03:50

标签: java json

我正在使用org.json类将XML消息转换为JSON,并且转换工作正常但是转换后的JSON消息具有root和row元素,如下面的屏幕截图1所示,并且我们要求有一个没有任何根和行的JSON消息如屏幕截图2所示

我尝试了不同的方式,但总是不成功

XML转换为JSON消息

XML to JSON converted message

要求JSON消息包含root和row,JSON消息应该只有“CompanyDetails”

Required JSON Mesage with out nodes

下面是我用来转换为读取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());
  }
  }
}

1 个答案:

答案 0 :(得分:0)

此行之后

JSONArray xmlJsonArr = xmlJsonObj.getJSONArray("root")
    .getJSONObject(0)
    .getJSONArray("row");

您需要继续将对象解析为行

xmlJsonArr

然后将libsasl2写入文件

不清楚根目录中是否有多个对象,但如果是,则需要遍历根数组的对象,然后构建自己的所有内部行对象的JSONArray