我是JSON的新手。
我在JSON的各种示例中都看到了如下所示,其中复杂值以df_com_sales.groupby('Product Name')['Quantity'].sum().max(axis=0)
开头
df_com_sales.groupby('Product Name')['Quantity'].sum().max(axis=0)
我编写的JSON没有类型,对象和属性,如下所示。
"type":"object", properties { }
,并且没有错误地提交到在线JSON模式验证器。
{
"$schema": "http://json-schema.org/draft-06/schema#",
"motor" : {
"type" : "object",
"properties" : {
"class" : "string",
"voltage" : "number",
"amperage" : "number"
}
}
}
的目的是什么?它是可选的吗?
答案 0 :(得分:1)
是的,它是可选的,请尝试将其删除并使用验证程序。
{
"$schema": "http://json-schema.org/draft-06/schema#",
"foo": "bar"
}
您实际上甚至不需要使用$schema keyword,即{}
是有效的json
我首先要了解什么是json,https://www.json.org/是最好的起点,但是您可能更喜欢像https://www.w3schools.com/js/js_json_intro.asp这样易于阅读的东西。
模式只是一个模板(或定义),以确保您为使用者生成有效的json
作为一个示例,假设您有一个应用程序,该应用程序解析一些json并查找名为test_score
的键,并将值(分数)保存在某个表/列的数据库中。在此示例中,我们将称为表tests
和列score
。由于数据库列需要type,因此我们将为integer
列选择一个数字类型,即score
。
一个有效的json示例如下
{
"test_score": 100
}
按照此示例,应用程序将解析键test_score
并将值100
保存到tests.score
数据库表/列。
但是假设没有分数,因此您输入了一个字符串,即"NA"
{
"test_score": "NA"
}
当应用程序尝试将NA
保存到数据库时,它将出错,因为NA
是一个字符串,不是数据库期望的整数。
如果将每个示例都放入任何在线json验证器中,则它们是有效的json示例。但是,虽然使用"NA"
或100
是有效的json,但对于需要使用json的实际应用程序无效。
所以现在您可能已经了解到json的作者可能会好奇
我可以将哪些有效类型用作测试值? 得分?
然后,责任由应用程序的编写者提供,客户端(作者)可以引用某种定义(即模式),以便作者确切地知道如何构造json,以便应用程序可以相应地对其进行处理。具有模式还可以使您验证/测试json,以便您知道它可以由应用程序处理,而无需实际通过应用程序发送json。
总而言之,在您看到的模式中说
"$test_score": {
"type": "integer",
"format": "tinyint"
},
json的作者现在知道他们必须传递一个整数,并且范围为0 to 255
,因为它是tinyint。他们不再需要通过错误尝试不同的值来查看应用程序中的哪个值。这对于拥有架构有很大的好处。