java基础(十九)非标准json字符串转json对象的处理

前端使用vue上传文件时,因参数url编码导致非标准JSON字符串传递。后端接收到{%22fileId%22:null,%22fileName%22:%222%22,%22typeId1%22,%22attrs23983832121512%22:null},处理不存在的属性避免JSONException,将非标准字符串转化为标准JSON并转换为Java对象。" 92660544,6913934,Laravel 开发实战:用户注册与登录实现,"['PHP', 'Laravel', 'Web开发', '框架', '用户管理']
摘要由CSDN通过智能技术生成

需求事件:

  前端要使用vue进行文件的上传,但是由于前端框架的封装原因,只能通过url编码进行上传文件中的附带参数的传递,因此有了今天的处理过程。

并且前端由于业务原因,添加了一些不属于后端vo对象的属性,造成了json转化异常


后端开始处理

  1. java接收到前端传入参数
  2. {%22fileId%22:null,%22fileName%22:%222%22,%22typeId1%22,%22attrs23983832121512%22:null}

  3. 后端接收参数
  4. 对url编码参数进行处理,JSONObject decodeUploadParam = JSONObject.fromObject(URLDecoder.decode(uploadParam, "UTF-8"))

     

  5. 如果不处理不存在的参数,则报属性找不到的错误

  6. net.sf.json.JSONException: java.lang.NoSuchMethodException: Unknown property 'attrs' on class 'class com.example.bo.FileUploadBo'

  7. 后端处理不存在的参数
  8. StringBuilder sb = new StringBuilder();
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果您的字符串非标准JSON格式,但是它的格式又非常接近标准的JSON格式,您可以尝试使用Java内置的JSON库(如Jackson、Gson等)来处理。这些库通常对JSON格式有一定的容错能力,可以自动修复或忽略一些非标准的语法错误。 以下是一个基于Jackson的示例代码,用于将非标准JSON字符串换为标准JSON格式: ```java import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.JsonNode; public class JsonUtils { public static String convertToStandardJson(String jsonString) { try { ObjectMapper mapper = new ObjectMapper(); JsonNode node = mapper.readTree(jsonString); String result = mapper.writeValueAsString(node); return result; } catch (Exception e) { e.printStackTrace(); return null; } } } ``` 该方法将输入的字符串解析一个JsonNode对象,然后通过ObjectMapper将JsonNode对象换为JSON字符串。由于JsonNode对象只会包含JSON数据,而不会包含任何注释或其他无关内容,因此换后的字符串就是标准的JSON格式。 注意:该方法仅适用于非标准JSON字符串与标准JSON格式非常接近的情况下。如果字符串格式与JSON格式差别较大,或者存在语法错误等问题,则需要进行额外的处理。 ### 回答2: 非标准JSON串指的是不符合JSON格式规范的数据串。要将非标准JSON变为标准的JSON串,可以通过JavaJSON库来处理。 首先,我们需要解析非标准JSON串,将其换为一个Java对象,然后再将该对象换为标准的JSON串。 在Java中,可以使用JSON库如Jackson或者Gson来处理JSON数据。 以下是一个示例使用Jackson库的代码: ```java import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; public class NonStandardJsonConverter { public static void main(String[] args) { String nonStandardJson = "{\"name\": \"John\", \"age\": 25, 'city': 'New York'}"; try { ObjectMapper objectMapper = new ObjectMapper(); Object nonStandardObject = objectMapper.readValue(nonStandardJson, Object.class); String standardJson = objectMapper.writeValueAsString(nonStandardObject); System.out.println("Standard JSON: " + standardJson); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } ``` 以上代码中,我们使用`ObjectMapper`类来实现JSON解析换。`readValue`方法将非标准JSON解析为一个Java对象,然后使用`writeValueAsString`方法将该Java对象换为标准的JSON串。 这样,就可以将非标准JSON变为JSON串,使其符合JSON格式规范。 ### 回答3: 要将非标准json字符串换为json格式的字符串,可以按照以下步骤进行操作: 1. 导入相关的Java库:在Java代码中,首先需要导入相关的JSON库,例如Gson或Jackson,这些库提供了将非标准json字符串换为json对象的功能。 2. 解析非标准json字符串:使用JSON库的解析函数,将非标准json字符串换为对应的数据结构,通常是一个Map对象或者一个自定义的Java对象。 3. 将解析后的数据结构换为json字符串:使用JSON库提供的函数,将解析后得到的数据结构换为标准的json字符串。这些函数通常会将数据结构换为json对象的形式,然后再将其换为字符串。 4. 输出标准的json字符串:将换后的json字符串进行输出,例如打印到控制台或者写入文件。 以下是一个使用Gson库进行换的示例代码: ```java import com.google.gson.Gson; public class JsonTransformer { public String transform(String nonStandardJson) { // 创建一个Gson对象 Gson gson = new Gson(); // 解析非标准json字符串为Map对象 Map<String, Object> map = gson.fromJson(nonStandardJson, Map.class); // 将解析后的Map对象换为json字符串 String json = gson.toJson(map); return json; } } ``` 请注意,上述示例代码中只是其中一种解决方案。具体的代码实现可能根据使用的JSON库和需求的不同而有所区别。另外,在处理非标准json字符串时,需要考虑数据的完整性和有效性,以免引发解析错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值