2020-08-14 06:12发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨大师!
我在描述将Xml转换为Json的Java代码时遇到问题。
我在博客中看到任何代码,但是所有这些代码都与Array有关。
这是我的目标:
但是我的Java代码正在生成此Json:
有人可以帮助我如何正确创建此代码? 我会感激的!
您可以使用外部jar JSONObject.jar。 我给出了一个示例代码,该代码将一个根节点下的两个测试节点转换为JSON数组-
package com.sap.XML2JSONArray; 导入org.json.JSONException; 导入org.json.JSONObject; 导入org.json.XML; 公共类XML2JSONArray { 公共静态整数PRETTY_PRINT_INDENT_FACTOR = 4; 公共静态字符串TEST_XML_STRING = " <?xml version = \" 1.0 \"?> abctest deftest "; 公共静态void main(String [] args){ 尝试{ JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING); 字符串jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR); System.out.println(jsonPrettyPrintString); } catch(JSONException je){ System.out.println(je.toString()); } } } 这是输出- {" root":{" test":[ { " attrib":" jsontext", " content":" abctest" }, { " attrib":" jsontext2", " content":"抗议" } ]}}
请问您可以分享此问题的解决方案吗?
请问您可以分享您的代码吗?
嗨,Sugata! !
我拥有与您创建的相同的代码。
package Xml2Json; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; 导入java.io.InputStreamReader; 导入java.io.OutputStream; 导入java.io.StringWriter; 导入java.util.Map; < br> import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.json.JSONObject; import org.json.XML; import org.w3c.dom.Document; import org.w3c.dom.Node; import com.sap.aii.mapping.api .AbstractTransformation; 导入com.sap.aii.mapping.api.StreamTransformationException; 导入com.sap.aii.mapping.api.TransformationInput; 导入com.sap.aii.mapping.api.TransformationOutpu t; 公共类MakeItJSON扩展了AbstractTransformation { public static int PRETTY_PRINT_INDENT_FACTOR = 4; public MakeItJSON(){} public void transform(TransformationInput in,TransformationOutput out)抛出StreamTransformationException { try {字符串sourcexml =""; 字符串targetfile =""; 字符串line =""; < br> InputStream ins = in.getInputPayload()。getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(ins)); while((line = br.readLine() )!= null){ sourcexml = sourcexml + line; } JSONObject jsonObject = XML.toJSONObject(sourcexml); 字符串jsonPrettyPrintString = jsonObject.toString(PRETTY_PRINT_INDENT_FACTOR) ; targetfile = jsonPrettyPrintString; out.getOutputPayload()。getOutputStream()。write(targetfile.getBytes()); } catch(Exception e ) { e.printStackTrace(); } } }
但是如果我放置更多"项目",则json代码不会创建所有项目。
我发现了问题!!! >
感谢您的支持!
请问您能否分享此问题的解决方案?
您好,
尽管这是一个古老的问题,但还是想回答。
要获得所需的JSON格式,您有2种选择:
1)安装自定义适配器,并在提及的Rest接收器通道上使用它,此处。
2)使用自定义Java映射将XML转换为所需的JSON结构,如此处。
此致
基兰·罗伊
最多设置5个标签!
您可以使用外部jar JSONObject.jar。 我给出了一个示例代码,该代码将一个根节点下的两个测试节点转换为JSON数组-
请问您可以分享此问题的解决方案吗?
请问您可以分享您的代码吗?
嗨,Sugata! !
我拥有与您创建的相同的代码。
package Xml2Json;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.OutputStream;
导入java.io.StringWriter;
导入java.util.Map;
< br> import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.json.JSONObject;
import org.json.XML;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import com.sap.aii.mapping.api .AbstractTransformation;
导入com.sap.aii.mapping.api.StreamTransformationException;
导入com.sap.aii.mapping.api.TransformationInput;
导入com.sap.aii.mapping.api.TransformationOutpu t;
公共类MakeItJSON扩展了AbstractTransformation
{
public static int PRETTY_PRINT_INDENT_FACTOR = 4;
public MakeItJSON(){}
public void transform(TransformationInput in,TransformationOutput out)抛出StreamTransformationException
{
try {
字符串sourcexml ="";
字符串targetfile ="";
字符串line ="";
< br>
InputStream ins = in.getInputPayload()。getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(ins));
while((line = br.readLine() )!= null){
sourcexml = sourcexml + line;
}
JSONObject jsonObject = XML.toJSONObject(sourcexml);
字符串jsonPrettyPrintString = jsonObject.toString(PRETTY_PRINT_INDENT_FACTOR) ;
targetfile = jsonPrettyPrintString;
out.getOutputPayload()。getOutputStream()。write(targetfile.getBytes());
}
catch(Exception e )
{
e.printStackTrace();
}
}
}
但是如果我放置更多"项目",则json代码不会创建所有项目。
我发现了问题!!! >
感谢您的支持!
请问您能否分享此问题的解决方案?
您好,
尽管这是一个古老的问题,但还是想回答。
要获得所需的JSON格式,您有2种选择:
1)安装自定义适配器,并在提及的Rest接收器通道上使用它,此处。
2)使用自定义Java映射将XML转换为所需的JSON结构,如此处。
此致
基兰·罗伊
一周热门 更多>