• json转换遇到的问题(JSONObject.toJSONString的问题) lq


    问题:
    Stirng数据放入map中,再取出来是一个object,转换成String后,使用jsonObject.parseObject(),转换报了异常:com.alibaba.fastjson.JSONException: syntax error, expect {, actual string, pos 83, line 1,
    解决方案:

    1. 使用object.toString();来转换成String,不要使用JSONObject.toJSONString();
    2. Object parse = JSONObject.parse(newStr);
      Map<String,String> map2 = JSONObject.parseObject(parse.toString(), HashMap.class);
      

    完整代码demo

    public static void main(String[] args) {
            String str = "{\"key\":\"{\\\"childKey1\\\":\\\"value1\\\",\\\"childKey2\\\":\\\"value2\\\"}\"}";
            Map<String,String> newMap = JSONObject.parseObject(str, HashMap.class);
            System.out.println("newMap = " + newMap);
            Object oldObj = str;
            Map<String, Object> map = new HashMap();
            map.put("1",oldObj);
            Object newObj = map.get("1");
            // ----------------------------解决方案一
            String newStr = newObj.toString();
            String newStr1 = JSONObject.toJSONString(newObj);
            System.out.println("newStr = " + newStr);
            System.out.println("newStr1 = " + newStr1);
    
            // -----------------------第一种转换方法 报异常-----------------------------
            Map<String,String> newMap1 = JSONObject.parseObject(newStr, HashMap.class);
            System.out.println("newMap1 = " + newMap1);
    
            // ------------------------解决方案二 不报异常的--------------------------------
            Object parse = JSONObject.parse(newStr);
            Map<String,String> map2 = JSONObject.parseObject(parse.toString(), HashMap.class);
            System.out.println("map2 = " + map2);
    }
    

    image
    image
    注意:可以看出fastjson的toJsonString方法不是能得到自己想要的结果。它不会去除转义字符!实际上两种解决方案都是用的Object.toString();

  • 相关阅读:
    flask 知识积累
    python中下划线
    pipenv知识积累
    shell知识积累
    AttributeError: type object 'testClass' has no attribute 'testMothod'
    python知识积累
    补全爬取的url
    linux 的基本命令
    Python里的拷贝
    关于第一次java课的感想
  • 原文地址:https://www.cnblogs.com/rbwbear/p/15957608.html
Copyright © 2020-2023  润新知