zoukankan      html  css  js  c++  java
  • JSON的相关转换

    1. JavaScript 与JSON的转换

    1.JavaScript 对象--->JSON字符串

    var json = JSON.stringify({a: 'Hello', b: 'Tony'});
    //结果是 '{"a": "Hello", "b": "Tony"}'
    

    2.JSON字符串 --->JavaScript 对象

    var obj = JSON.parse('{"a": "Hello", "b": "Tony"}');
    //结果是 {a: 'Hello', b: 'Tony'}
    

    2. 使用Controller返回json字符串

    返回一个json

    2.1 导入依赖

     <dependency>
              <groupId>com.fasterxml.jackson.core</groupId>
              <artifactId>jackson-databind</artifactId>
              <version>2.11.2</version>
          </dependency>
    

    2.2 使用 最多

    @Controller
    public class UserController {
       @RequestMapping("/json1")
       @ResponseBody
       public String json1() throws JsonProcessingException {
           //创建一个jackson的对象映射器,用来解析数据
           ObjectMapper mapper = new ObjectMapper();
           //创建一个对象
           User user = new User("Tony", 18, "男");
           //将我们的对象解析成为json格式
           String str = mapper.writeValueAsString(user);
           //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
           return str;
      }
    }
    
    

    1. 出现了乱码问题,我们需要设置一下他的编码格式为utf-8,以及它返回的类型

    //produces:指定响应体返回类型和编码
    @RequestMapping(value = "/json1",produces = "application/json;charset=utf-8")
    

    或者 在springmvc 配置文件上做文章

    <mvc:annotation-driven>
    <!-  json  格式化乱码解决手段 -- >
      <mvc:message-converters register-defaults="true">
          <bean class="org.springframework.http.converter.StringHttpMessageConverter">
              <constructor-arg value="UTF-8"/>
          </bean>
          <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
              <property name="objectMapper">
                  <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                      <property name="failOnEmptyBeans" value="false"/>
                  </bean>
              </property>
          </bean>
      </mvc:message-converters>
    </mvc:annotation-driven>
    

    4. 时间

    public class JsonUtils {
       
       public static String getJson(Object object) {
           return getJson(object,"yyyy-MM-dd HH:mm:ss");
      }
    
       public static String getJson(Object object,String dateFormat) {
           ObjectMapper mapper = new ObjectMapper();
           //不使用时间差的方式
           mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
           //自定义日期格式对象
           SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
           //指定日期格式
           mapper.setDateFormat(sdf);
           try {
               return mapper.writeValueAsString(object);
          } catch (JsonProcessingException e) {
               e.printStackTrace();
          }
           return null;
      }
    }
    

    使用:

    @RequestMapping("/json5")
    public String json5() throws JsonProcessingException {
       Date date = new Date();
       String json = JsonUtils.getJson(date);
       return json;
    }
    

    5. fastjson的使用

    0. 相关方法

    • JSONObject 代表 json 对象
    • JSONArray 代表 json 对象数组**
    • JSON代表 JSONObject和JSONArray的转化

    1. 导入依赖

    <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
       <version>1.2.60</version>
    </dependency>
    

    2. 使用

    public class FastJsonDemo {
       public static void main(String[] args) {
           //创建一个对象
           User user1 = new User("张三", 3, "男");
           User user2 = new User("张三", 3, "男");
           User user3 = new User("张三", 3, "男");
           User user4 = new User("张三", 3, "男");
           List<User> list = new ArrayList<User>();
           list.add(user1);
           list.add(user2);
           list.add(user3);
           list.add(user4);
    
           System.out.println("*******Java对象 转 JSON字符串*******");
           String str1 = JSON.toJSONString(list);
           System.out.println("JSON.toJSONString(list)==>"+str1);
           String str2 = JSON.toJSONString(user1);
           System.out.println("JSON.toJSONString(user1)==>"+str2);
    
           System.out.println("
    ****** JSON字符串 转 Java对象*******");
           User jp_user1=JSON.parseObject(str2,User.class);
           System.out.println("JSON.parseObject(str2,User.class)==>"+jp_user1);
    
           System.out.println("
    ****** Java对象 转 JSON对象 ******");
           JSONObject jsonObject1 = (JSONObject) JSON.toJSON(user2);
           System.out.println("(JSONObject) JSON.toJSON(user2)==>"+jsonObject1.getString("name"));
    
           System.out.println("
    ****** JSON对象 转 Java对象 ******");
           User to_java_user = JSON.toJavaObject(jsonObject1, User.class);
           System.out.println("JSON.toJavaObject(jsonObject1, User.class)==>"+to_java_user);
      }
    }
    
    
    不停的思考,就会不停的进步
  • 相关阅读:
    Python接口自动化(四) https请求(SSLError解决办法)
    Python接口自动化(三)post请求四种传送正文方式
    Python接口自动化(二) 发送post请求的接口;发送post【data】;python中字典和json的区别
    requests高级用法
    HDU-1874-畅通工程续 (队列优化)
    Codeforces Round #387 (Div. 2) D. Winter Is Coming
    Codeforces Round #387 (Div. 2) C. Servers
    Codeforces Round #387 (Div. 2) B. Mammoth's Genome Decoding
    Codeforces Round #387 (Div. 2) A. Display Size
    Codeforces Round #386 (Div. 2) B. Decoding
  • 原文地址:https://www.cnblogs.com/zhenqk/p/13575050.html
Copyright © 2011-2022 走看看