个人对json的一些简单理解?

json是什么?
没有.json结尾的这种文件,json(JavaScript Object Notation)是一种简单的数据交换格式,在此之前我也不知道这个东西其实没有想象的那么抽象,看看后面的例子会更清晰

json中的数据结构
json中只有两种数据基本结构,一种是MAP,或者叫对象,另一种是Array
1.Map
类似与java中的Map,这里是以{开始,以}结束,内部object内容是键值对的形势,key:value,中间是:号隔开,不同的object之间用逗号隔开 比如:{name:hujie , age:21} 官方给的图解:(https://www.json.org/)

2.Array
这个就类似于数组吧,所以很多时候我们都把json叫做就json数组, 这里是以[开始的,以]结束的,中间的value用逗号隔开 比如:[value1 , value2 , value3]

json数组中的value可以是很多种数据类型的值,官方给了如下图解

这里的string,number等等我想是不需要多解释了,谁实话,这些具体的定时,我能理解,可是没法说出来。

知识点:
1.json并不难理解,简单点理解就是一种数据交换的格式
2.json只有两中结构,一种是object另一种是array,并且两者可以相互嵌套,{}是对象,[]是数组
json与JavaScript的转换
在javaScript中有一个动态脚本执行函数:**eval(),**这是一个javaScript的全局对象 eval()函数只能接受原生态的字符串作为参数,如果不是字符串,则会原样返回,否则会返回字符串的计算结果(前提是得有结果,没有结果返回null) eval()案例:

<script language=javascript type=text/javascript>

        alert(eval(x=10;y=10;x*y;));//100,当做js脚本执行

        alert(eval(2+3));//5

        alert(eval(x+10));//20了

        var str={};//花括号内没属性时

        alert(eval('(' + str + ')'));//弹出:[object Object]

        alert(eval(str));//弹出:undefined

 

        str={name:'hj'};//花括号内有一个属性

        alert(typeof eval('(' + str + ')'));//弹出:object,以对象方式返回

        alert(eval(str));//弹出:hj

        alert(eval('(' + str + ')').name);//弹出:hj

        alert(eval(str).name);//弹出:undefined

 

        str={name:'hj',age:21};//花括号内有多个属性时

        alert(eval('(' + str + ')'));//object对象

        alert(eval('(' + str + ')').name);//hj

        alert(eval('(' + str + ')').age);//21

        //alert(eval(str));//运行时会出错,多个属性时不用小括号运行出错

        //花括号{}是用来声明一个对象的,如果需要引用这个对象,那么我们必须加上(),这样才可以,因是声明语句只能执行,并不能够返回

        //用()括起来的目的是将声明语句转换成表达式,这样就可以计算表达式的值,并返回

</script>

这里指的注意的是,eval执行的脚本,生成的变量,是属于调用eval的那个作用域的

<script language=javascript type=text/javascript>

        eval(var str = '全局';);

        function test(){

            eval(var str = '局部';); 

            alert(str);//局部

        }

        test();

        alert(str);//全局

</script>

下面讲一下json串和javaScript对象的相互转换吧 json串转换成js对象:

<script language=javascript type=text/javascript>

        var jsonpeople = [{'name':'hj','age':21},{'name':'darkrake','age':21}];

        var jspeople = eval('('+jsonpeople+')');

        alert(jspeople[0].name+:+jspeople[0].age);

        alert(jspeople[1].name+:+jspeople[1].age);

</script>

json与XML的格式对比
简单对比:

XML:

<peoples>

    <people>

        <name>hj</name>

        21</age>

    </people>

    <people>

        <name>darkrake</name>

       <age> 21</age>

    </people>

</peoples>

对应的json串格式:

{

peoples:{

        people:[{'name':'hj','age':21},

        {'name':'darkrake','age':21}]

    }

}

来一个稍微复杂一点的吧,多层嵌套的:

<province>

    <provincename>安徽</provincename>

    <city>

        <cityname>六安</cityname>

        <town>金安区</town>

        <town>舒城</town>

    </city>

    <city>

        <cityname>合肥</cityname>

        <town>肥东</town>

        <town>肥西</town>

    </city></address></province>

<province>

    <provincename>北京</provincename>

    <city>

        <cityname>北京</cityname>

        <town>东城区</town>

        <town>海淀区</town>

    </city>

</province>
{

  address: {

    Province: [

      {

        ProvinceName: 安徽,

        City: [

          {

            CityName: 六安,

            town: [

              金安区,

              舒城

            ]

          },

          {

            CityName: 合肥,

            town: [

              肥东,

              肥西

            ]

          }

        ]

      },

      {

        ProvinceName: 北京,

        City: {

          CityName: 北京,

          town: [

            东城区,

            海淀区

          ]

        }

      }

    ]

  }

}

json in Java API常用的类以及方法
JSONObject类(往往与JSONArray结合起来用,最常用了)

案例:

package javaJsonAPI;
import org.json.JSONObject;
public class JsonArrayTest {
    /
     * 表示我没有在官网https://www.json.org/里面找到json的jar包 ,这里我的解决 方案是下载官网提供的源文件*.java
     * 项目里面建了一个名为org.json的package,把源文件都导入进去了,其实和在classpath中导入jar包没有区别
     */

    public static void main(String args[]) {

        JSONObject jsonObject = new JSONObject({'name':'DarkRake','age':21});

        System.out.println(jsonObject.get(name));

        System.out.println(jsonObject.get(age));

    }

}

JSONArray类 案例:

package javaJsonAPI;
import org.json.JSONArray;
public class JsonArrayTest {
    /
     * 表示我没有在官网https://www.json.org/里面找到json的jar包 ,这里我的解决 方案是下载官网提供的源文件*.java

     * 项目里面建了一个名为org.json的package,把源文件都导入进去了,其实和在classpath中导入jar包没有区别

     */

    public static void main(String args[]) {

        String strs[] = { one, two, three };

        JSONArray myjson = new JSONArray(strs);

        for (int i = 0; i < myjson.length(); i++) {

            System.out.println(myjson.getString(i));

        }

    }

}
进阶:JSONObject与JSONArray类结合使用

package javaJsonAPI;
import org.json.JSONObject;
public class JsonArrayTest {
    /*

     * 表示我没有在官网https://www.json.org/里面找到json的jar包 ,这里我的解决 方案是下载官网提供的源文件*.java

     * 项目里面建了一个名为org.json的package,把源文件都导入进去了,其实和在classpath中导入jar包没有区别

     */

    public static void main(String args[]) {

        String str = {address: {Province: {ProvinceName: 安徽,City: [{CityName: 六安,   own: [金安区,舒城] },{CityName: 合肥,  own: [肥东,肥西]}]}}};

        JSONObject jo = new JSONObject(str);

        String ProvinceName = jo.getJSONObject(address)//

                .getJSONObject(Province).get(ProvinceName).toString();//

        System.out.println(ProvinceName);

        String cityName = jo.getJSONObject(address).getJSONObject(Province)//

                .getJSONArray(City).getJSONObject(0).get(CityName)//

                .toString();

        System.out.println(   + cityName);

        String town1 = jo.getJSONObject(address).getJSONObject(Province)//

                .getJSONArray(City).getJSONObject(0).getJSONArray(town)//

                .get(0).toString();

        System.out.println(      + town1);

        String town2 = jo.getJSONObject(address).getJSONObject(Province)//

                .getJSONArray(City).getJSONObject(0).getJSONArray(town)//

                .get(1).toString();

        System.out.println(      + town2);

    }

}

JSONStringer
->快速构建一个JSON串,并可以写入文件中去
基本方法介绍:
JSONStringer是JSONWriter的子类;
JSONStringer一般通过object().key().value().key().value().endObject()进行构造;
JSONString ():构造函数
object()表明开始一个对象,即添加{
endObject()表明结束一个对象,即添加 } ;
array()表明开始一个数组,即添加一个 [ ;
endArray()表明结束一个数组,即添加一个 ] ;
key()表示添加一个key;
value()表示添加一个value;
注意:通过该方法,Object之间的“,”以及Array数组各个value之间的“,”都是自动添加的

简单案例:

package javaJsonAPI;
import org.json.JSONStringer;
public class JsonArrayTest {

    /*

     * 表示我没有在官网https://www.json.org/里面找到json的jar包 ,这里我的解决 方案是下载官网提供的源文件*.java

     * 项目里面建了一个名为org.json的package,把源文件都导入进去了,其实和在classpath中导入jar包没有区别

     */

    public static void main(String args[]) {

        JSONStringer js = new JSONStringer();

        js.array();

            js.object();

                js.key(name);

                js.value(hj);

                js.key(age);

                js.value(21);

            js.endObject();

            js.object();

                js.key(name);

                js.value(darkrake);

                js.key(age);

                js.value(21);

            js.endObject();

        js.endArray();

        System.out.println(js.toString());

    }

}

小综合案例:

package javaJsonAPI;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONStringer;

public class JsonArrayTest {

    /*

     * 表示我没有在官网https://www.json.org/里面找到json的jar包 ,这里我的解决 方案是下载官网提供的源文件*.java

     * 项目里面建了一个名为org.json的package,把源文件都导入进去了,其实和在classpath中导入jar包没有区别

     */

    public static void main(String args[]) {

        JSONStringer js = new JSONStringer();

        // 创建book1

        JSONObject book1 = new JSONObject();

            book1.put(name, Java);

            JSONArray ja1 = new JSONArray();

            String str1[] = { LiuWANJUN, XXX };

            ja1.put(str1);

            book1.put(author, ja1);

            book1.put(price,108);

        // 创建book2

        JSONObject book2 = new JSONObject();

            book2.put(name, JavaScript);

            JSONArray ja2 = new JSONArray();

            String str2[] = { LiSongFeng, CaoLi };

            ja2.put(str2);

            book2.put(author, ja2);

            book2.put(price,108);

        js.object();

            js.key(Book);

            js.array();

                js.value(book1);

                js.value(book2);

            js.endArray();

        js.endObject();

        System.out.println(js.toString());

    }
}

{

  Book: [

    {

      author: [

        [

          LiuWANJUN,

          XXX

        ]

      ],

      price:108,

      name: Java

    },

    {

      author: [

        [

          LiSongFeng,

          CaoLi

        ]

      ],

      price:108,

      name: JavaScript

    }

  ]

}

转换成XML即为:

<book>

        LiuWANJUN</author>

        XXX</author>

        <price>108</price>

        <name>Java</name>

    </book>

    <book>

        LiSongFeng</author>

        CaoLi</author>

        <price>108</price>

        <name>JavaScript</name>

    </book>

总结:
1.JSON是一种数据交换的格式,在web项目中具有着广泛的应用,尤其是AJAX异步加载数据,往往都是用json格式的数据,而不是传统的XML;
2.JSON只有两种结构,Object和Array

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Windows上的JSON格式化应用程序可用于将JSON数据转换为易于阅读和理解的格式。这样的应用程序通常具有以下功能和用途: 1. JSON数据格式转化:JSON格式化应用程序可以将JSON字符串转换为带有缩进和换行符的易于阅读的格式。这使得开发人员和分析师更容易理解和分析复杂的JSON数据。 2. 文件编辑和保存:JSON格式化应用程序通常支持打开和编辑JSON文件,并可以保存为格式化的JSON文件。这使得用户可以轻松地对JSON数据进行修改和保存。 3. JSON语法验证:JSON格式化应用程序可以检查JSON数据的语法是否正确。它可以报告任何语法错误,帮助开发人员和用户更容易地发现和纠正错误。 4. 数据浏览和搜索:JSON格式化应用程序通常提供一个用户友好的界面来浏览和搜索JSON数据。用户可以展开和收起不需要的部分,并使用搜索功能快速定位特定的数据。 5. 数据导入和导出:JSON格式化应用程序通常支持将JSON数据导入和导出到其他格式,如CSV或Excel。这使得用户可以轻松地在不同的数据源和应用程序之间进行数据交换和共享。 总的来说,Windows上的JSON格式化应用程序提供了一个方便和高效的方式来处理和分析JSON数据。它们帮助开发人员和用户更好地理解和利用JSON数据,提高工作效率和开发效果。 ### 回答2: Windows Json格式化应用是一种可以对Json数据进行格式化和美化的应用程序。Json是一种轻量级的数据交换格式,通常用于在不同的系统之间传递和存储数据。然而,Json数据在传输和阅读方面可能不够直观和友好,这就是为什么需要Json格式化应用的原因。 Json格式化应用可以将复杂的Json数据重新格式化为易于阅读和理解的形式。通过应用程序提供的功能,用户可以将Json数据中的缩进、换行、空格等元素进行自定义和调整,使数据更加结构化和清晰。此外,Json格式化应用还可以对Json数据进行排序、过滤和搜索,帮助用户更快速地找到所需的信息。 在Windows平台上,有许多Json格式化应用可供选择。其中一些应用程序具有直观的用户界面,使用户可以通过简单的拖放或导入文件的方式加载和处理Json数据。应用程序通常提供实时预览功能,以便用户可以即时看到格式化后的结果,并进行必要的调整和修改。 此外,Json格式化应用通常还具有批量处理的能力,可以同时处理多个Json文件或大量的Json数据。用户可以设置自定义的格式化规则和选项,以适应不同的数据需求和个人偏好。 总而言之,Windows Json格式化应用是一种方便、易于使用的工具,可以帮助用户将复杂的Json数据重新格式化为更加直观和可读的形式。它使得处理和阅读Json数据变得更加高效和方便,减少了人工解析的工作量,提高了工作效率。 ### 回答3: Windows操作系统上有很多可以用于JSON格式化的应用程序。JSON格式化是将JSON数据转化成可读性更好的形式,使其更易于理解和修改。以下是一些常见的Windows JSON格式化应用: 1. Visual Studio Code:这是一款功能强大的代码编辑器,它支持多种编程语言,并且内置了很多插件。其中之一就是用于JSON格式化的插件。通过该插件,用户可以轻松地对JSON数据进行格式化和美化。 2. Notepad++:这是一个免费的文本编辑器,它支持多种编程语言,并且可以轻松地格式化JSON数据。用户只需要将JSON数据复制到Notepad++中,然后选择合适的选项即可完成格式化。 3. JSONLint:这是一个在线的JSON格式验证和格式化工具。用户可以将JSON数据复制到JSONLint的网站上,然后点击“格式化”按钮即可完成格式化。此外,JSONLint还会显示可能存在的语法错误,帮助用户更好地检查和修复JSON数据。 4. JSON Viewer:这是一个可视化的JSON格式化工具,用户可以轻松地在Windows上安装并使用。它可以将JSON数据以树状结构展示,方便用户查看和编辑JSON数据的各个部分。 总之,Windows操作系统上有多种JSON格式化的应用程序可供选择。这些应用程序提供了方便快捷的方式,帮助用户更好地理解和编辑JSON数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值