Java研学-JSON与AJAX

一 JSON

1 定义

  JSON(JavaScript Object Notation, JS 对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的 JS 规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

2 格式

  JSON 就是一种有格式的字符串。任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。

规则如下:
- 映射用冒号(“:”)表示。”名称” : 值,标准格式名称用双引号括起来;
- 并列的数据之间用逗号(“,”)分隔。”名称1:1, ”名称2:2- 映射的集合(对象)用大括号(“{
   }”)表示。{
   ”名称1:1, ”名称2:2}
- 并列数据的集合(数组)用方括号([])表示。示例如下:
  [
   {
   ”名称1:, ”名称2:2},
   {
   ”名称1:, ”名称2:2}
  ]
- 元素值可具有的类型:string,number,object,array,truefalsenull

3 JavaScript 中的 JSON

 ① 表示 JSON

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>json语法</title>
</head>
<body>
  <script>
      //json字符串
      var json01="\"name\":lisi";
      console.log(json01)
      //json对象
      var json02={
   "name":"lisi","age":23};
      console.log(json02)
      //json数组
      var json03=[
          {
   "name":"lisi","age":23},
          {
   "name":"zhangsan","age":23}
      ];
      console.log(json03)
  </script>
</body>
</html>

 ② JSON 与 JS 对象转换
  浏览器环境提供一个工具类名叫JSON,里面提供方法帮我们实现 JSON 与 JS 对象之间的转换。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>json语法</title>
</head>
<body>
  <script>
      /*
      * json对象转字符串:
      * JSON.stringify()
      * json字符转转对象:
      * JSON.parse()
      * */
      //json对象
      var jsonObj={
   "name":"lisi","age":23};
      var str=  JSON.stringify(jsonObj);
      console.log(str)
      //json对象字符串
      var jsonStr="{\"name\":\"lisi\",\"age\":23}";
      var obj = JSON.parse(jsonStr);
      console.log(obj)
  </script>
</body>
</html>

二 Java 中的 JSON

1 表示 JSON

  新建一个测试类于 Java 中表示 JSON

package cn.tj.json;
public class JsonTest {
   
	/*json格式*/
    @Test
    public void json_str() {
   
        /*基本json数据:
         * {"name":"李四","age":23,
         *  {"dept":"开发部"}
         * }
         * */
        String s = "{\"name\":\"李四\",\"age\":23}";
        System.out.println(s);
    }
}

2 JSON 与 Java 对象转换

  开发中一般都会使用第三方的一些 JSON 操作的依赖或者 JAR 包来来完成 Java 对象与 JSON 字符串之间的转换,其中主要方法需通过ObjectMapper对象进行调用。在 Java 中,转换 JSON 的依赖或者 JAR 有很多,如:

- Jackson:在 Spring MVC 中内置支持(需要导入依赖才能使用),速度也挺快,稳定性较好
- Fastjson:阿里出品,号称是 Java 领域中转换 JSON 最快的一个插件,中文文档较齐全

3 Jackson – ObjectMapper对象

 ① 添加依赖

	<dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.13.5</version>
    <</
java.lang.NoClassDefFoundError: org/jaxen/JaxenException at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230) at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207) at org.dom4j.tree.AbstractNode.selectSingleNode(AbstractNode.java:183) at demo.TestXML.getTaskByName(TestXML.java:19) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunne
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰勒疯狂展开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值