json是字符串吗?什么是json字符串?

阳光 2021-07-26 16:38:12 java常见问答 4533

在实际工作中,我们经常会接触到json,可以说几乎所有编程语言都有解析JSON的库,但是有些新手java不清楚json是不是字符串?下面来我们就来给大家讲解一下。

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

什么是json字符串?

简单地说 ,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

名称 / 值对

按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对":

{"firstName":"Brett"}

这个示例非常基本,而且实际上比等效的纯文本"名称 / 值对"占用更多的空间:

firstName=Brett

但是,当将多个"名称 / 值对"串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个"名称 / 值对"的 记录,比如:

{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}

从语法方面来看,这与"名称 / 值对"相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。

表示数组

当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在XML中,需要许多开始标记和结束标记;如果使用典型的名称 / 值对(就像在本系列前面文章中看到的那种名称 / 值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstName这样的形式。

如果使用 JSON,就只需将多个带花括号的记录分组在一起:

{
    "people": [
        
        {
            "firstName": "Brett"
            , "lastName": "McLaughlin"
            , "email": "aaaa"
        },
        
        {
            "firstName": "Jason"
            , "lastName": "Hunter"
            , "email": "bbbb"
        },
        
        {
            "firstName": "Elliotte"
            , "lastName": "Harold"
            , "email": "cccc"
        }
        
]
}

这不难理解。在这个示例中,只有一个名为 people的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):

{
    "programmers": [
    {
        "firstName": "Brett"
        , "lastName": "McLaughlin"
        , "email": "aaaa"
}
    , {
        "firstName": "Jason"
        , "lastName": "Hunter"
        , "email": "bbbb"
}
    , {
        "firstName": "Elliotte"
        , "lastName": "Harold"
        , "email": "cccc"
}]
    , "authors": [
    {
        "firstName": "Isaac"
        , "lastName": "Asimov"
        , "genre": "sciencefiction"
}
    , {
        "firstName": "Tad"
        , "lastName": "Williams"
        , "genre": "fantasy"
}
    , {
        "firstName": "Frank"
        , "lastName": "Peretti"
        , "genre": "christianfiction"
}]
    , "musicians": [
    {
        "firstName": "Eric"
        , "lastName": "Clapton"
        , "instrument": "guitar"
}
    , {
        "firstName": "Sergei"
        , "lastName": "Rachmaninoff"
        , "instrument": "piano"
}]
}

这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称 / 值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。

在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。

希望大家看完文章之后,能够知道json字符串的意义,其实json就是一种数据格式,在与后端的数据交互中有较为广泛的应用。最后大家如果想要了解更多json工具教程知识,敬请关注奇Q工具网。

推荐阅读:

java接口如何定义?java接口能干嘛?

java数据类型有哪些?java基本类型之间如何转换?

eclipse怎样快捷输入?eclipse常用快捷键介绍