Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSON XML转换问题空格_Java_Xml_Json - Fatal编程技术网

Java JSON XML转换问题空格

Java JSON XML转换问题空格,java,xml,json,Java,Xml,Json,我正在尝试使用json lib-2.4.jar将json字符串转换为xml,并得到以下异常 线程“main”nu.xom.IllegalNameException中的异常:0x20不是合法的NCName字符 在nu.xom.Verifier.throwIllegalNameException处(未知源) 我已经确定了这个问题,因为json字符串的“location”标记中有一个空白字符(0x20),并且没有正确解析它。我已经删除了空间,并测试了一次,然后它的工作预期。我还尝试了使用StringE

我正在尝试使用json lib-2.4.jar将json字符串转换为xml,并得到以下异常

线程“main”nu.xom.IllegalNameException中的异常:0x20不是合法的NCName字符 在nu.xom.Verifier.throwIllegalNameException处(未知源)

我已经确定了这个问题,因为json字符串的“location”标记中有一个空白字符(0x20),并且没有正确解析它。我已经删除了空间,并测试了一次,然后它的工作预期。我还尝试了使用StringEscapeUtils.escapeXml和下面的一些自定义方法来删除空白字符

StringBuffer s1 = new StringBuffer();
  for (char c : value.toCharArray()) {// value is the json string
    // System.out.println(c);
       s1.append(c);
       if (c == 0x20) {
       s1.append(" ");
        }
       }    
但这些方法都没有给出预期的结果

我还在下面附加Json字符串

{
"ArticleList": [
{
"hash": "4b8e81ec1197aa071eb62238465e4cf4",
"data":{"twitter":{"id":"276992360028712960","text":"{James 2:13} Mercy triumphs over judgment.","source":"<a href=\"http://www.abcd.com\" rel=\"nofollow\">TweetCaster<\/a>","created_at":"Fri, 07 Dec 2012 10:11:39 +0000","user":{"id":12121,"location":"{GALATIANS 2:20}","friends_count":153,"description":"Drafter#Photographer","name":"Ervin","created_at":"Sat, 28 Jan 2012 00:26:08 +0000","screen_name":"E_doubleU","id_str":"476305028","statuses_count":1212,"lang":"en","followers_count":114}},"salience":{"content":{"sentiment":0}},"klout":{"score":31},"interaction":{"id":"1e240567d69faf80e","content":"{James 2:13} because Mercy triumphs over judgment.","schema":{"version":3},"author":{"id":4763,"username":"E_doubleU","link":"http://twitter.com/","name":"Ervin wooddruff","avatar":"http://a0.twimg.com/profile_images/2921703982/13ff21c643da6b748f279baee376f58c_normal.jpeg"},"source":"TweetCaster  Android","link":"http://twitter.com/","created_at":"Fri, 07 Dec 2012 10:11:39 +0000","type":"twitter"},"language":{"tag":"en","confidence":90},"demographic":{"gender":"male"}}}
]
}
{
“物品清单”:[
{
“散列”:“4b8e81ec1197aa071eb62238465e4cf4”,
“数据:{“推特”:{“id”:“276992360028712960”,“文本:{James 2:13}怜悯战胜了审判。”,“来源:{TweetCaster”,“created_at::“Fri,2012年12月7日10:11:39+0000”,“用户:{“id”:12121,“地点:{加拉太书2:20}”,“朋友数”:153,“描述:”:“起草者#摄影师”,“姓名:““埃尔文”,“created__at:”:“Sat,2012年1月28日00:26+0000”,“屏幕名称”:“E_doubleU”,“id_str”:“47630528”,“statuses_count”:1212,“lang”:“en”,“followers_count”:114},“salience”:{“content”:{“emotation”:0},“klout”:{“score”:31},“interaction”:{“id”:“1e240567d69faf80e”,“content”:“{詹姆斯2:13}因为仁慈战胜了判断”,“schema”:{“version”:3},“author”:{“id”:4763,“username”:“E_doubleU”,“link”http://twitter.com/","名称“:“埃尔文·伍德鲁夫”,“阿凡达”:”http://a0.twimg.com/profile_images/2921703982/13ff21c643da6b748f279baee376f58c_normal.jpeg},“来源”:“TweetCaster Android”,“链接”:http://twitter.com/“,“created_at”:“Fri,2012年12月7日10:11:39+0000”,“type”:“twitter”},“language”:{“tag”:“en”,“confidence”:90},“人口统计”:{“性别”:“男性”}}”
]
}

这方面的任何帮助都是非常可观的

JSON标记和XML标记中允许哪些字符不匹配。例如,JSON标记中的空白字符有效,但XML标记中的空白字符无效。因此,如果需要提出通用解决方案,您必须发明一些方法来表示XML标记中不允许的字符通过转义序列来确定


你的问题并不完全清楚,但我想问题是你实际上得到了类似于
,“location”:“{GALATIANS…”
的东西作为你的JSON字符串,这是发送方的问题,标记实际上应该是“location”"。如果是这种情况,您可以使用
java.lang.String.trim
方法去除前导空格和尾随空格。

似乎是库中的一个bug。
location
属性的值是一个字符串,因此没有理由认为空格会出现问题。因为字符串以{,所以它认为它是一个对象。但由于它在引号中,大括号没有任何特殊意义。请通过链接查看不同json库的一些解决方法Shi Henry,感谢您的回答。问题与您提到的相同。如果我在位置标记末尾添加空格(“”),然后用双引号(“”)结束。然后它正常工作。“位置:“{GALATIANS 2:20}”,//这是在引发异常。“位置:{GALATIANS 2:20}”,//这工作正常。我认为这是库的问题。