Java转JSON串的几种方式

昨天在与对端系统调接口的时候,对端系统对我们传过去的json串老是处理不了,后来查原因是应为我们传过去的json串里有json对象数组,因为我们的json串存在表里的,取出来是作为json字符串放到json数组里的,所以带了双引号,对端认为是字符串,不是json对象所以处理不了。

[{"cardName":"bankCard1","cardCode":"888888888","cardValue":99999999},{"cardName":"bankCard2","cardCode":"999999999","cardValue":222222222}] 这种是正确的json对象数组,["{"cardName":"bankCard1","cardCode":"888888888","cardValue":99999999}","{"cardName":"bankCard2","cardCode":"999999999","cardValue":222222222}"],这种是json字符串数组。

以下总结一下java转JSON串的几种方式:

1、将java对象转成json串
2、通过JSONObject生成json串
3、通过json字符串生成json串

代码通过阿里的fastjson包实现。

代码如下:

1、Person类,包含Crad的List

package com.doit8.test.jsontest.pojo;
import java.util.ArrayList;
import java.util.List;
public class Person {
  private String username;
  private String email;
  private String sex;
  private int age;
  private List<Card> cardList=new ArrayList<Card>();
  public String getUsername() {
    return username;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public String getEmail() {
    return email;
  }
  public void setEmail(String email) {
    this.email = email;
  }
  public String getSex() {
    return sex;
  }
  public void setSex(String sex) {
    this.sex = sex;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public List<Card> getCardList() {
    return cardList;
  }
  public void setCardList(List<Card> cardList) {
    this.cardList = cardList;
  }
}

2、Card类

package com.doit8.test.jsontest.pojo;
public class Card {
  private String cardName;
  private String cardCode;
  private Integer cardValue;
  public String getCardName() {
    return cardName;
  }
  public void setCardName(String cardName) {
    this.cardName = cardName;
  }
  public String getCardCode() {
    return cardCode;
  }
  public void setCardCode(String cardCode) {
    this.cardCode = cardCode;
  }
  public Integer getCardValue() {
    return cardValue;
  }
  public void setCardValue(Integer cardValue) {
    this.cardValue = cardValue;
  }
}

3、JSON处理测试类

package com.doit8.test.jsontest;
 import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.doit8.test.jsontest.pojo.Card;
import com.doit8.test.jsontest.pojo.Person;
/**
* JSON转换
*
*/
public class App
{
  public static void main( String[] args )
  {
    //1。通过对象生成JSON串,对象里包含对象数组转成JSON串。
    Person person=new Person();
    person.setUsername("xiejava");
    person.setSex("man");
    person.setAge(38);
    person.setEmail("xiejava@ishareread.com");
    Card card1=new Card();
    card1.setCardName("bankCard1");
    card1.setCardCode("888888888");
    card1.setCardValue(99999999);
    Card card2=new Card();
    card2.setCardName("bankCard1");
    card2.setCardCode("999999999");
    card2.setCardValue(222222222);
    //对象数组
    List<Card> cards=new ArrayList<Card>();
    cards.add(card1);
    cards.add(card2);
    person.setCardList(cards);
    String json = JSON.toJSON(person).toString();
    System.out.println(json);
    //2.通过JSON对象生成JSON串
    JSONObject jObject=new JSONObject();
    jObject.put("username", "xiejava");
    jObject.put("sex", "man");
    jObject.put("age", 38);
    jObject.put("email", "xiejava@ishareread.com");
    //通过JSONArray包装对象数组
    JSONArray jArray=new JSONArray();
    jArray.addAll(cards);
    jObject.put("cardList", jArray);
    String json2=jObject.toJSONString();
    System.out.println(json2);
    //3.通过JSON对象生成JSON串
    JSONObject jObject2=new JSONObject();
    jObject2.put("username", "xiejava");
    jObject2.put("sex", "man");
    jObject2.put("age", 38);
    jObject2.put("email", "xiejava@ishareread.com");
    //构造JSON字符串
    String cardjsonStr1="{\"cardName\":\"bankCard1\",\"cardCode\":\"888888888\",\"cardValue\":99999999}";
    String cardjsonStr2="{\"cardName\":\"bankCard2\",\"cardCode\":\"999999999\",\"cardValue\":222222222}";
    JSON.parseObject(cardjsonStr1);
    JSONArray jArray2=new JSONArray();
    //将JSON字符串转成JSON对象,加入到JSONArray,[注意一定要用JSON.parseObject()方法转换成JSON对象,否则还是字符串,转成JSON串的时候会带双引号。]
    jArray2.add(JSON.parseObject(cardjsonStr1));
    jArray2.add(JSON.parseObject(cardjsonStr2));
    jObject2.put("cardList", jArray2);
    String json3=jObject2.toJSONString();
    System.out.println(json3);
  }
}

pom.xml中引入fastjson包

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

运行结果

{"cardList":[{"cardName":"bankCard1","cardCode":"888888888","cardValue":99999999},{"cardName":"bankCard1","cardCode":"999999999","cardValue":222222222}],"sex":"man","age":38,"email":"xiejava@ishareread.com","username":"xiejava"} 
{"cardList":[{"cardCode":"888888888","cardName":"bankCard1","cardValue":99999999},{"cardCode":"999999999","cardName":"bankCard1","cardValue":222222222}],"sex":"man","age":38,"email":"xiejava@ishareread.com","username":"xiejava"} 
{"cardList":[{"cardName":"bankCard1","cardCode":"888888888","cardValue":99999999},{"cardName":"bankCard2","cardCode":"999999999","cardValue":222222222}],"sex":"man","age":38,"email":"xiejava@ishareread.com","username":"xiejava"}

(0)

相关推荐

  • 浅谈Java后台对JSON格式的处理操作

    1. 将对象转换为JSON字符串,返回值为一个JSON字符串 public static String toJson(Object value) { try { return mapper.writeValueAsString(value); } catch (Exception e) { e.printStackTrace(); } return null; } 2.  将JSON字符串转换为实体对象,返回值为实体对象 public static <T> T toObject(String

  • JAVA实现JSON后端向前端传递数据

    1 后端两个辅助类 ConcurrentDateUtil.Java,用于生成我们需要格式的时间 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class ConcurrentDateUtil { private static ThreadLocal<DateFormat> threadLo

  • Java后台处理Json格式数据的方法

     1.将对象转换为JSON字符串,返回值为一个JSON字符串 public static String toJson(Object value) { try { return mapper.writeValueAsString(value); } catch (Exception e) { e.printStackTrace(); } return null; } 2. 将JSON字符串转换为实体对象,返回值为实体对象 public static <T> T toObject(String j

  • java后台处理前端传的json串方法

    关于json,就不在多做介绍了,直接进入正题: 举例子: 1.现在前台做了一个Ajax请求,往数据库中添加数据: var json='{"goodName":"果粒橙","goodTitle":"这是一种好喝的","goodMessage":"这个很好喝,你还想喝 吗........","goodCost":"2","goodPrice&

  • Java转JSON串的几种方式

    昨天在与对端系统调接口的时候,对端系统对我们传过去的json串老是处理不了,后来查原因是应为我们传过去的json串里有json对象数组,因为我们的json串存在表里的,取出来是作为json字符串放到json数组里的,所以带了双引号,对端认为是字符串,不是json对象所以处理不了. [{"cardName":"bankCard1","cardCode":"888888888","cardValue":9999

  • 深入剖析构建JSON字符串的三种方式(推荐)

    前言:JSON 是轻量级的数据交换格式,很常用,尤其是在使用 Ajax 时,在后台将数据封装为 JSON 字符串更是常见.之前在做项目的时候用过几种方式在后端将数组或 List 集合转换为 JSON 字符串,现在回想起来竟然又有些遗忘.现在来一个汇总,把这几种构建 JSON 字符串的方式彻底回忆起来. 笔记中提供了大量的代码示例,需要说明的是,大部分代码示例都是本人所敲代码并进行测试,不足之处,请大家指正~ 一.alibaba 的 Fastjson 1.Fastjson 是一个以 Java 语言

  • 详解java实现HTTP请求的三种方式

    目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,HttpClient3.1 是 org.apache.commons.httpclient下操作远程 url的工具包,虽然已不再更新,但实现工作中使用httpClient3.1的代码还是很多,HttpClient4.5是org.apache.http.client下操作远程 url的工具包,最新的:另一

  • 基于$.ajax()方法从服务器获取json数据的几种方式总结

    一.什么是json json是一种取代xml的数据结构,和xml相比,它更小巧但描述能力却很强,网络传输数据使用流量更少,速度更快. json就是一串字符串,使用下面的符号标注. {键值对} : json对象 [{},{},{}] :json数组 "" :双引号内是属性或值 : :冒号前为键,后为值(这个值可以是基本数据类型的值,也可以是数组或对象),所以 {"age": 18} 可以理解为是一个包含age为18的json对象,而[{"age":

  • SpringMVC返回json数据的三种方式

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等. 1.第一种方式是spring2时代的产物,也就是每个json视图controller配置一个Jsoniew. 如:<bean

  • SpringMVC接收与响应json数据的几种方式

    前言 前后端的数据交互,除了通过form表单进行提交外,也可以通过ajax向后端传递和接收json格式数据(这种方式可以实现请求数据和页面分离).本文将总结一下在Spring MVC中接收和响应json数据的几种方式. 话不多说了,来一起看看详细的介绍吧 准备步骤: 1.导入json相关框架的依赖(比如jackson). 2.spring mvc的controller方法正常写,如果需要响应json,增加@responsebody注解. 3.在接受json对应的输入参数前,加上@RequestB

  • Java中线程Thread的三种方式和对比

    介绍 多线程主要的作用就是充分利用cpu的资源.单线程处理,在文件的加载的过程中,处理器就会一直处于空闲,但也被加入到总执行时间之内,串行执行切分总时间,等于每切分一个时间*切分后字符串的个数,执行程序,估计等几分钟能处理完就不错了.而多线程处理,文件加载与差分过程中 一.Java实现多线程的三种方式 1.继承Thread 通过Thread继承,并重写run方法来实现多线程,案例如下: public class ThreadPattern extends Thread { @Override p

  • 解析C#拼接Json串的几种方法

    C#定义多行字符串的方式 在定义的前面加上@符号: string aa = @"asdfsdfsd fsdsfsdfsdfsdfsdfsdfs safasfsadfsdfasfsfsdfsd "; 在C#中拼接字符串有几种方法 1. 利用  JsonConvert.SerializeObject方法 (Nuget获取Newtonsoft.Json Package),需要Newtonsoft.Json 支持. string uid = "22"; var abcObj

  • JAVA实现Base64编码的三种方式

    目录 定义: 二进制文件可视化 sun 包下的 BASE64Encoder apache 包下的 Base64 util 包下的 Base64 (jdk8) 定义: 二进制文件可视化 Base64 是一种能将任意二进制文件用 64 种字元组合成字串的方法, 彼此之间是可以互相转换的. 也常用来表示字串加密后的内容, 例如电子邮件 (很多文本混杂大量 加号./.大小写字母.数字和等号,一看就知道是 Base64) Base64 编码步骤: 第一步,将每三个字节作为一组,一共是24个二进制位 第二步

  • Java设置session超时的几种方式总结

    Java设置session超时的几种方式总结 1.      在web容器中设置(此处以tomcat为例) 在tomcat-5.0.28\conf\web.xml中设置,以下是tomcat 5.0中的默认配置: <!-- ==================== Default Session Configuration ================= --> <!-- You can set the default session timeout (in minutes) for

随机推荐