添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

{“ids”:[“1053,1054”]}

此处ids是一个长度为1,元素是字符串"1053,1054"的数组。
在java中使用JSONArray的toJavaList(Long.class)转为Long类型的列表,预想中这种情况应该会发生NumberFormatException,但是实际上并没有,看下下面的代码

    public static void main(String[] args) {
        JSONArray ids = new JSONArray();
        ids.add("1053,1054");
        System.out.println(ids);
        System.out.println(ids.toJavaList(Long.class));
["1053,1054"]
[10531054]

如上,结果把1053和1054拼接起来返回了一个[10531054],这并不是我想要的。同样我也测试了JSONObject的getLong()

    public static void main(String[] args) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("id", "1053,1054");
        System.out.println(jsonObject.getLong("id"));
10531054

果然结果是一样的。进入源码发现它们都走到了TypeUtil.castToLong(Object value)方法,其中对于字符串类型的value是这样处理的

            if (value instanceof String) {
                String strVal = (String)value;
                if (strVal.length() == 0 || "null".equals(strVal) || "NULL".equals(strVal)) {
                    return null;
                if (strVal.indexOf(44) != -1) {
                    strVal = strVal.replaceAll(",", "");
                try {
                    return Long.parseLong(strVal);
                } catch (NumberFormatException var4) {
                    JSONScanner dateParser = new JSONScanner(strVal);
                    Calendar calendar = null;
                    if (dateParser.scanISO8601DateIfMatch(false)) {
                        calendar = dateParser.getCalendar();
                    dateParser.close();
                    if (calendar != null) {
                        return calendar.getTimeInMillis();

strVal = strVal.replaceAll(“,”, “”);这一步可以看出它把字符串的逗号全部去掉了。所以这并不是一个bug,而是有意地把逗号当作数字的分隔符处理了。
当然除了castToLong,castToInteger,castToFloat,castToDouble也都做了这样的处理,奇怪的是基础封装类中唯独Short没有这样做。而BigDecimal和BigInteger也没有这样做。
总之,有些时候,这样的处理方式并不是我们想要的的,这种时候只能自己处理了。

var obj={a:[2,3],b:{m:[3,4],n:2} }; var jsonStr = JSON.stringify( obj ); alert(jsonStr); //将显示 {"a":[2,3],"b":{"m":[3,4],"n":2}} </script> </body> var arr = [1,2,3, { a : 1 } ]; JSON.stringify( arr );//json字符串转数组 var jsonStr = '[1,2,3,{"a":1}]'; JSON.parse( jsonStr );//字符串数字 parseInt('123') : 返回 123(int); parseInt('1234xxx') : 返回
1.List list = JSONArray.toList(array, Person.class);// 过时方法 2.List<?> list2 = JSONArray.toList(array, new Person(), new JsonConfig());//参数1为要转换的JSONArray数据,参数2为要转换的目标数据,即List盛装的数据 3.List applyFormSaveDTOS = JSON.parseArray(applyFormSyncPO.g
var runTest = function(timeTag, testFunction) { console.time(timeTag); for (var i = 0; i < 100000000; i++) { testFunction(); co...
以alibaba fastjson为例,通过JSONField注解标签定义JSON字符串字段的名称。 定义JAVA对象: import com.alibaba.fastjson.annotation.JSONField; public class TestBean { @JSONField(name = "1") private String name; @JSONField(name = "2") private String sex; public TestB
Gson gson = new Gson(); List<Person> persons = new ArrayList<Person>(); String str = gson.toJson(persons); //json转换为list Gson gson = new Gson(); List<Person> persons = gson.fromJson(
今天小编写 代码时候,后台给我返回的一个json字符串[name:{group.id:'123'}] 所以不能通过name.group.id这样来 取值,不然会报没有id属性。 看到这里相信很多程序员和小编一样肯定会骂后台传递的值不对,小编也是这样骂的。不过问题还的解决。小编解决方法如下: name.group['group.id'] 问题的到很快的解决了。
需要将图一变为图2 方法参数解释:jsonString为关联品牌的json对象字符串,key为json对象的名字参数。相当于图一中text参数 //提取json字符串数据中某个属性,返回拼接字符串 逗号分隔 $scope.jsonToString=function(jsonString,key){ var json=JSON.parse(jsonString);//将json字符串转换...
JSON.parseArray报错 com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 1, fastjson-version 1.2.47 解决方案: JSON.parseArray(JSON.toJSONString(payOrderList), FeeBusOrderDetailFlowVO.class); 第一个参数使用 JSON.toJSONString()JSON
如果您的 JSON 字符串数字后面带转义字符 `\r`,您可以使用 Python 内置的 `json` 模块来将其解析为 Python 对象,然后再将其转换回 JSON 字符串。在转换回 JSON 字符串时,可以使用 `json.dumps()` 方法指定参数 `ensure_ascii=False` 来保留非 ASCII 字符,从而避免将 `\r` 转义为 `/r`。 以下是一个示例代码: ```python import json # 假设您的 JSON 字符串存储在一个名为 json_str 的变量中 # 解析 JSON 字符串为 Python 对象 json_obj = json.loads(json_str) # 将 Python 对象转换回 JSON 字符串,保留非 ASCII 字符 fixed_json_str = json.dumps(json_obj, ensure_ascii=False) # 输出修复后的 JSON 字符串 print(fixed_json_str) 这将输出修复后的 JSON 字符串。请注意,这种方法仅适用于 JSON 字符串数字后面只有一个转义字符 `\r` 的情况。如果有其他问题,您可能需要进行其他的修复。
CSDN-Ada助手: 非常感谢您分享关于JSON使用的小坑的经验,这对于很多刚接触JSON的人来说一定非常有帮助。同时,我也想恭喜您写了第四篇博客,持续创作是很不容易的。接下来,如果可能的话,可以考虑分享一些关于JSON的高级用法或者与其他技术的结合应用,这样会更有深度和价值。再次感谢您的分享! CSDN 会根据你创作的前四篇博客的质量,给予优秀的博主博客红包奖励。请关注 https://bbs.csdn.net/forums/csdnnews?typeId=116148&utm_source=csdn_ai_ada_blog_reply4 看奖励名单。 MySQL全连接查询 CSDN-Ada助手: 恭喜您写出了关于MySQL全连接查询的博客,非常详细且实用。希望您能继续保持创作的热情,分享更多有价值的技术内容。如果可以的话,建议您可以写一些关于MySQL索引优化、性能调优等方面的文章,让我们更好地了解MySQL的使用方法。感谢您的分享! CSDN 会根据你创作的博客的质量,给予优秀的博主博客红包奖励。请关注 https://bbs.csdn.net/forums/csdnnews?typeId=116148&utm_source=csdn_ai_ada_blog_reply6 看奖励名单。