json-lib-2.4.jar Bug,json字符串中value为"[value]"结构时,解析为数组,不会解析成字符串

使用json-lib.jar 2.4进行json字符串转换为对象时发现一个bug。贴下测试代码:

        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
          </dependency>
          <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.12</version>
          </dependency>
public class Test {
    public static void main(String[] args) {
        String json = "{‘user‘:[ {‘name‘:‘zs‘, ‘score‘:‘[0-100]‘}, " +
                                "{‘name‘:‘zs‘, ‘score‘:‘[0-100]‘} ]}";
        test_json_lib(json);
        test_fastjson(json);
    }

    public static void test_json_lib(String json){
        net.sf.json.JSONObject obj = net.sf.json.JSONObject.fromObject(json);
        System.out.println("json-lib====="+obj.toString());
    }

    public static void test_fastjson(String json){
        com.alibaba.fastjson.JSONObject obj = com.alibaba.fastjson.JSONObject.parseObject(json);
        System.out.println("fastjson====="+obj);
    }

}

输出结果:

json-lib====={"user":[{"name":"zs","score":["0-100"]},{"name":"zs","score":["0-100"]}]}
fastjson====={"user":[{"name":"zs","score":"[0-100]"},{"name":"zs","score":"[0-100]"}]}

我测试了使用json-lib和阿里的fastjson,结果如上:发现json-lib把score的value当成了数组(本来是个字符串"[0-100]"),fastjson转换正常。

时间: 2024-12-20 08:11:56

json-lib-2.4.jar Bug,json字符串中value为"[value]"结构时,解析为数组,不会解析成字符串的相关文章

问题处理:php json_decode函数处理的字符串中含有反斜杠“\”时,处理出错,返回的结果为NULL

php json_decode函数处理的字符串中含有反斜杠“\”时,处理出错,返回的结果为NULL. 处理方法,将字符串中的反斜杠1个替换成2个: /** * 一个反斜杠要替换成4个,否则json_decode不能解析 */ $json_str = str_replace('\\','\\\\',$json_str); $json = json_decode($json_str,true);

用js将字符串中的元音字母删除并返回新数组

1.首先你想将字符串转换成数据然后循环遍历的话很麻烦,因为你需要数组和字符串转换来转换去 将数组转换成字符串用var a = [1,2,3,4,5,6]:a.join('')---得到的是"123456"若是a.join()则获取的是"1,2,3,4,5,6" 将字符串转换成数组用var b='abcdefg':b.split('')---得到的是["a","b","c","d",&qu

将字符串中的单词分割,存入二维数组后输出

思路 每次内部循环需要找到一个单词,将其存入数组.外循环遍历至字符串末尾结束. 代码 /************************************************************************* > File Name: word_split.c > Author: KrisChou > Mail:zhoujx0[email protected] > Created Time: Sun 24 Aug 2014 10:42:48 AM CST

PHP字符串中引用变量问题

php中字符串引用变量主要是数据库操作字符串的不同 1,普通字符串引用变量 a.外层必须引用双引号 b.字符串中的变量可写如:$s 或者{$s} 2.数据库操作字符串(数据库操作指令) a.字符串外层必须使用双引号 b.变量必须用大括号{}(赋值字符串属性时除外) 如: `    c.当需变量与数据库属性相赋值或者作逻辑运算时,需要对应数据属性的类型:如     上述代码中数据库中的属性 title,authordid,content均为字符串,所以变量要用单引号'{$title}'或者'$ti

js--找字符串中出现最多的字符

在一个字符串中,如 'zhaochucichuzuiduodezifu',我们要找出出现最多的字符.本文章将详细说明方法思路. 先介绍两个string对象中的两个方法:indexOf()和charAt()方法 indexOf()方法介绍 返回某个指定的字符串值在字符串中首次出现的位置 语法 Object(string|array).indexOf(searchValue, fromIndex); 参数1  (必需)规定需检索的字符串值 参数2 (可选)规定在字符串中开始检索的位置(包括自身).若

【C】字符串的输入,求输入字符串中最长的单词

首先,基本目标很简单,就是利用C语言:编写一个函数,输入一行字符,将此行字符中的最长的单词输出. 代码如下: #include<stdio.h> void input(char s[]){ int i=0; for(int c;(c=getchar())!='\n';i++){ s[i]=c; } s[i]='\0';//读取完成,记得对这个字符数组封口 } char* findmax(char s[]){ int max=0,word_length=0,p=0,i=0;//这个p是用来记录最

HDU 3518 Boring counting(后缀数组啊 求字符串中不重叠的重复出现至少两次的子串的个数)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3518 Problem Description 035 now faced a tough problem,his english teacher gives him a string,which consists with n lower case letter,he must figure out how many substrings appear at least twice,moreover

JavaScript基础 indexOf() 返回一个子字符串在原始字符串中的索引 从左往右查找

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ ex1: code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; chars

将字符串中单词经排序后输出

思路 先将字符串中的单词分割保存至二维数组中,再经排序后输出.水题,直接上代码了. 代码 /************************************************************************* > File Name: words_sort.c > Author: KrisChou > Mail:[email protected] > Created Time: Sun 24 Aug 2014 08:41:42 PM CST *****