gpt4 book ai didi

java - 从 JSON 创建 XML

转载 作者:行者123 更新时间:2023-12-01 12:09:28 25 4
gpt4 key购买 nike

我有一个 JSON 文件,我想将其转换为 JAVA 中的 XML,以便使用输出的 XML 结构处理一些不同的内容。我的文件如下所示:

{
"published" : "2014-04-15T12:00:13.760Z",
"actor" : {
"objectType" : "person",
"id" : "a00906a9-d3e3-40b5-8ef2-9e1051828c09",
"displayName" : "Ashley Wessels"
},
"verb" : "floating_run",
"object" : {
"objectType" : "experiments",
"id" : "e9d9f71a-6c9e-4724-98d1-32dee57bb015",
"content" : [
{
"mass" : 10,
"volume" : 392.2,
"density" : 0.025497195308516064,
"fluid" : 1
},
{
"mass" : 150,
"volume" : 150,
"density" : 1,
"fluid" : 1
},
{
"mass" : 50,
"volume" : 50,
"density" : 1,
"fluid" : 1
},
{
"mass" : 50,
"volume" : 100,
"density" : 0.5,
"fluid" : 1
},
{
"mass" : 100,
"volume" : 50,
"density" : 2,
"fluid" : 1
},
{
"mass" : 400,
"volume" : 300,
"density" : 1.3333333333333333,
"fluid" : 1
}
]
},
"target" : {
"objectType" : "experiment",
"id" : "9383fbbe-e071-49b2-9770-46ddc4f8cd6e",
"displayName" : "Grundel experiment"
},
"generator" : {
"objectType" : "application",
"url" : "splash",
"id" : "04123e9e-14d0-447b-a851-805b9262d9a6",
"displayName" : "splash"
},
"provider" : {
"objectType" : "study",
"url" : "http://go-lab.gw.utwente.nl/experiments/siswagrundel/",
"id" : "0f8184db-53ba-4868-9208-896c3d7c25bb",
"displayName" : "SiswaGrundel"
},
"publishedClient" : "2014-04-15T12:17:03.902Z",
"publishedServer" : "2014-04-15T12:00:13.760Z",
"_id" : "534d1f4ddd5532e74400019f"
}

我使用了 org.json 库,还尝试了其他一些库(例如 JETTISON)来从这个人创建 xml 文件,但大多数“XML.toString()”方法无法处理此文件中的 JSONArray。它只会产生引号等奇怪的输出。有没有可以处理这种类型的 JSON 结构的库?如果不是:我应该如何处理这种文件类型?

** 编辑 **

我在网上查了一下,发现这个文件似乎与我的结构相同。但是我的编码错误,有人知道为什么吗?

这里是:

{"menu": {
"header": "SVG Viewer",
"items": [
{"id": "Open"},
{"id": "OpenNew", "label": "Open New"},
null,
{"id": "ZoomIn", "label": "Zoom In"},
{"id": "ZoomOut", "label": "Zoom Out"},
{"id": "OriginalView", "label": "Original View"},
null,
{"id": "Quality"},
{"id": "Pause"},
{"id": "Mute"},
null,
{"id": "Find", "label": "Find..."},
{"id": "FindAgain", "label": "Find Again"},
{"id": "Copy"},
{"id": "CopyAgain", "label": "Copy Again"},
{"id": "CopySVG", "label": "Copy SVG"},
{"id": "ViewSVG", "label": "View SVG"},
{"id": "ViewSource", "label": "View Source"},
{"id": "SaveAs", "label": "Save As"},
null,
{"id": "Help"},
{"id": "About", "label": "About Adobe CVG Viewer..."}
]
}}

它最初是在 org.json 中提供的。

最佳答案

xml节点显示不正确的原因是JSONArray的名称。由于某种原因,如果我将 JSONArray 从“content”重命名为“_content”或其他名称,它会显示正确。

对我来说,它看起来像是来自 org.json 的错误。

此处使用的代码:

    Scanner scan = new Scanner(new File(jsonFile));
String jsonData = "";
while (scan.hasNext()) {
jsonData += scan.nextLine();// + "\n";
}
scan.close();

JSONObject json = new JSONObject(jsonData);

String xml = org.json.XML.toString(json);

System.out.println(xml);

正如我之前提到的,只需重命名 JSONArray 就可以解决问题。重命名后,输出如下所示:

<actor><displayName>Ashley Wessels</displayName><id>a00906a9-d3e3-40b5-8ef2-9e1051828c09</id><objectType>person</objectType></actor><publishedClient>2014-04-15T12:17:03.902Z</publishedClient><provider><displayName>SiswaGrundel</displayName><id>0f8184db-53ba-4868-9208-896c3d7c25bb</id><url>http://go-lab.gw.utwente.nl/experiments/siswagrundel/</url><objectType>study</objectType></provider><verb>floating_run</verb><generator><displayName>splash</displayName><id>04123e9e-14d0-447b-a851-805b9262d9a6</id><url>splash</url><objectType>application</objectType></generator><publishedServer>2014-04-15T12:00:13.760Z</publishedServer><published>2014-04-15T12:00:13.760Z</published><_id>534d1f4ddd5532e74400019f</_id><object><id>e9d9f71a-6c9e-4724-98d1-32dee57bb015</id><_content><volume>392.2</volume><density>0.025497195308516064</density><mass>10</mass><fluid>1</fluid></_content><_content><volume>150</volume><density>1</density><mass>150</mass><fluid>1</fluid></_content><_content><volume>50</volume><density>1</density><mass>50</mass><fluid>1</fluid></_content><_content><volume>100</volume><density>0.5</density><mass>50</mass><fluid>1</fluid></_content><_content><volume>50</volume><density>2</density><mass>100</mass><fluid>1</fluid></_content><_content><volume>300</volume><density>1.3333333333333333</density><mass>400</mass><fluid>1</fluid></_content><objectType>experiments</objectType></object><target><displayName>Grundel experiment</displayName><id>9383fbbe-e071-49b2-9770-46ddc4f8cd6e</id><objectType>experiment</objectType></target>

重命名之前,它看起来像这样:

<actor><displayName>Ashley Wessels</displayName><id>a00906a9-d3e3-40b5-8ef2-9e1051828c09</id><objectType>person</objectType></actor><publishedClient>2014-04-15T12:17:03.902Z</publishedClient><provider><displayName>SiswaGrundel</displayName><id>0f8184db-53ba-4868-9208-896c3d7c25bb</id><url>http://go-lab.gw.utwente.nl/experiments/siswagrundel/</url><objectType>study</objectType></provider><verb>floating_run</verb><generator><displayName>splash</displayName><id>04123e9e-14d0-447b-a851-805b9262d9a6</id><url>splash</url><objectType>application</objectType></generator><publishedServer>2014-04-15T12:00:13.760Z</publishedServer><published>2014-04-15T12:00:13.760Z</published><_id>534d1f4ddd5532e74400019f</_id><object><id>e9d9f71a-6c9e-4724-98d1-32dee57bb015</id>{&quot;volume&quot;:392.2,&quot;density&quot;:0.025497195308516064,&quot;mass&quot;:10,&quot;fluid&quot;:1}
{&quot;volume&quot;:150,&quot;density&quot;:1,&quot;mass&quot;:150,&quot;fluid&quot;:1}
{&quot;volume&quot;:50,&quot;density&quot;:1,&quot;mass&quot;:50,&quot;fluid&quot;:1}
{&quot;volume&quot;:100,&quot;density&quot;:0.5,&quot;mass&quot;:50,&quot;fluid&quot;:1}
{&quot;volume&quot;:50,&quot;density&quot;:2,&quot;mass&quot;:100,&quot;fluid&quot;:1}
{&quot;volume&quot;:300,&quot;density&quot;:1.3333333333333333,&quot;mass&quot;:400,&quot;fluid&quot;:1}<objectType>experiments</objectType></object><target><displayName>Grundel experiment</displayName><id>9383fbbe-e071-49b2-9770-46ddc4f8cd6e</id><objectType>experiment</objectType></target>

关于java - 从 JSON 创建 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27345193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com