首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >json.org零保存为字符串,而不是数字

问json.org零保存为字符串,而不是数字
EN

Stack Overflow用户
提问于 2011-02-08 21:00:59
回答 2查看 1.4K关注 0票数 1

我正在使用org.json将一个大的xml转换成json字符串。然而,对于数字0,它似乎创建了一个字符串"0",而其他数字,如5或2,则可以很好地工作,并成为实数。

xml:

代码语言:javascript
复制
<w count="2" winline="5" freespins="0" jackpot="false" start="0" payout="500" supergames="0" />

java:

代码语言:javascript
复制
JSONObject json = XML.toJSONObject(xml);
String jsontext = json.toString();

生成的json:

代码语言:javascript
复制
"w":[{"supergames":"0","freespins":"0","winline":5,"count":2,"start":"0","jackpot":false,"payout":500}

有没有办法让0变成真正的0数字而不是字符串?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-08 21:24:39

看起来像窃听器。我查看了源代码,它看起来可能会抛出IndexOutOfBoundsException,这基本上会导致到数字的转换失败:

https://github.com/douglascrockford/JSON-java/blob/master/XML.java (第327行):

代码语言:javascript
复制
if (initial == '0' && string.charAt(negative ? 2 : 1) == '0') {

如果字符串以"0“开头并且长度只有1个字符,即如果字符串是"0”,则抛出。异常被捕获,转换方法基本上只是返回未转换的原始字符串("0")。

选项不多:

  1. 报告错误并希望快速修复。
  2. 现在可以在您自己的文件副本中自行修复它。
  3. 如果您的情况可以接受0.0代替0,则将XML中的“0”改为“0.0”。(
  4. @bestsss)
票数 3
EN

Stack Overflow用户

发布于 2011-02-08 21:23:29

下面是将XML属性转换为JSON值的snippet of code。

我可能错了,但是没有处理值为"0“的情况。

代码语言:javascript
复制
try {
            char initial = string.charAt(0);
            boolean negative = false;
            if (initial == '-') {
                initial = string.charAt(1);
                negative = true;
            }
            if (initial == '0' && string.charAt(negative ? 2 : 1) == '0') {
                return string;
            }
            if ((initial >= '0' && initial <= '9')) {
                if (string.indexOf('.') >= 0) {
                    return Double.valueOf(string);
                } else if (string.indexOf('e') < 0 && string.indexOf('E') < 0) {
                    Long myLong = new Long(string);
                    if (myLong.longValue() == myLong.intValue()) {
                        return new Integer(myLong.intValue());
                    } else {
                        return myLong;
                    }
                }
            }
        }  catch (Exception ignore) {
        }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4933322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档