Java映射-将Xml转换为Json-带数组

2020-08-14 06:12发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨大师!

我在描述将Xml转换为Json的Java代码时遇到问题。

我在博客中看到任何代码,但是所有这些代码都与Array有关。

这是我的目标:

但是我的Java代码正在生成此Json:

有人可以帮助我如何正确创建此代码? 我会感激的!

(14.1 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨大师!

我在描述将Xml转换为Json的Java代码时遇到问题。

我在博客中看到任何代码,但是所有这些代码都与Array有关。

这是我的目标:

但是我的Java代码正在生成此Json:

有人可以帮助我如何正确创建此代码? 我会感激的!

(14.1 kB)
付费偷看设置
发送
7条回答
Cikesha
1楼 · 2020-08-14 06:41.采纳回答

您可以使用外部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":"抗议"
     }
 ]}}

 
天桥码农
2楼-- · 2020-08-14 06:44

请问您可以分享此问题的解决方案吗?

超级大咸鱼
3楼-- · 2020-08-14 06:34

请问您可以分享您的代码吗?

骆驼绵羊
4楼-- · 2020-08-14 06:30

嗨,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代码不会创建所有项目。

SKY徐
5楼-- · 2020-08-14 06:28

我发现了问题!!!

感谢您的支持!

奄奄一息的小鱼
6楼-- · 2020-08-14 06:31

请问您能否分享此问题的解决方案?

Aaron 3364
7楼-- · 2020-08-14 06:21

您好,

尽管这是一个古老的问题,但还是想回答。

要获得所需的JSON格式,您有2种选择:

1)安装自定义适配器,并在提及的Rest接收器通道上使用它,此处

2)使用自定义Java映射将XML转换为所需的JSON结构,如此处

此致

基兰·罗伊

一周热门 更多>