json字符串,json对象

1、语言的数据类型

虽然数据在底层都以字节的形式运算、存储和传输,但为了程序易于理解,所有的高级语言都有自己的数据类型,比如字符串、数字、布尔等。

对于面向对象的语言,几乎都有“对象”这个封装类型,这个抽象的类型只限于自己语言之内解析,比如Java对象之与JVM,js对象之与浏览器等。

数据在跨平台交互时,离不开"字符串”这个类型,为了解析效率和易读性,字符串往往都有一定的格式,比如字符串中使用“&”分隔符,到后来业界有了xml、json等。

2、Json字符串与Json对象

Json只是一种数据格式,没有语言之分,字符串和对象是两种不同的数据类型。

2.1、Javascript下的Json

var person1 = '{ "name": "wangxu", "age": 27 }'; //字符串类型
var person2 = { "name": "wangxu ", "age": 27 }; //对象类型,比上面少了引号

如果person1不进行类型转换,想取age值,只能使用js的split或者substring,这显然是反人类的。

但想取person2的age,直接使用person2.age即可,这就是语言“对象”类型的魔力。


Json格式的js字符串类型与对象类型的转换

字符串-->对象:

person2=JSON.parse(person1);
或者 eval('('+person1+')')
对象-->字符串:

person1=JSON.stringify(person2)
  

2.2、Java下的Json

Json格式的Java字符串类型与对象类型及其转换如下:

public class TestJsonConvert {
 
 public static void main(String[] args) {
  //字符串
  String person1="{\"name\":\"wangxu\",\"age\":27}";
  //对象
  Person person2=new Person("wangxu",27);
  //转换:字符串-->对象
  person2=com.alibaba.fastjson.JSON.parseObject(person1, Person.class);
  //转换:对象-->字符串
  person1=com.alibaba.fastjson.JSON.toJSONString(person2);
 }
 
 static class Person { 
  private String name; 
  private Integer age;
  public Person() { } 
  public Person(String name, Integer age) { 
   this.name = name;  this.age = age;
  }
  public String getName() {  return name; } 
  public void setName(String name) {  this.name = name; } 
  public Integer getAge() {  return age; } 
  public void setAge(Integer age) {  this.age = age; }} 
}
2.3、浏览器与Java web的Json交换

浏览器到后台:将Json格式的js对象转换成js字符串后发送,servlet接收后再将字符串转换成Java对象。

后台到浏览器:将Json格式的Java对象转换成字符串后输出,浏览器接受字符串后,可以将其转换成js对象类型。

关于java web输出json字符串的简单总结:[
java web返回json无外乎最原始的输出,和使用框架封装自动输出

一、使用HttpServletResponse直接输出

  method如下:

/**
  * 直接使用HttpServletResponse输出json串
  * 
  * @param
  * @return
  * @throws IOException 
  */
 public void getJson(HttpServletResponse response) throws IOException {
        reresponse.setCharacterEncoding("utf-8");
        response.setContentType("application/json;charset=UTF-8");
        PrintWriter out = response.getWriter();
        Object obj=new Object();//JavaBean
        String json=JSON.toJSONString(obj); //这里使用阿里的fastjson
        out.print(json);
        out.flush();
        out.close();
 }
  

二、使用框架自动将JavaBean转成Json输出

这里列举spring mvc3的实现方式,需要引入对应的jackson包

i)、请求method添加@ResponseBody后直接返回JavaBean对象如下

/**
  * 使用@ResponseBody返回json
  * spring 调用jackson将Object自动转json并输出 
  * @param
  * @return 
  * @throws IOException
  */
 @RequestMapping(value = "/json", method = RequestMethod.GET)
 @ResponseBody
 public Object getJson(HttpServletResponse response) throws IOException {
  Object obj = new Object();// JavaBean
  return obj;
 }
ii)、spring-mvc.xml的配置如下

<!-- 请求方法映射 -->
 <mvc:annotation-driven
  ignore-default-model-on-redirect="true">
  <!-- 识别@ResponseBody后,将javaBean自动转json -->
  <mvc:message-converters>
   <bean
    class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    <property name="supportedMediaTypes">
     <list>
      <value>application/json;charset=UTF-8</value>
     </list>
    </property>
   </bean>
  </mvc:message-converters>
 </mvc:annotation-driven>
]

注意事项:

前端Ajax请求后端返回Json时,注意至少有一端要设置数据格式为Json,不然返回的data默认是"Json字符串",还得手工转换成“Json对象”

前台请求时设置 dataType:"json";

后台响应时设置 response.setContentType("application/json;charset=UTF-8");

转载于:https://my.oschina.net/u/1054538/blog/680800

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值