查找包含最大深度2或3中所有允许的结构组合的JSON示例
我已经编写了一个处理JSON对象的程序。现在我想确认我是否遗漏了什么 是否有所有允许的JSON结构组合的JSON示例?大概是这样的:查找包含最大深度2或3中所有允许的结构组合的JSON示例,json,combinations,grammar,Json,Combinations,Grammar,我已经编写了一个处理JSON对象的程序。现在我想确认我是否遗漏了什么 是否有所有允许的JSON结构组合的JSON示例?大概是这样的: { "key1" : "value", "key2" : 1, "key3" : {"key1" : "value"}, "key4" : [ [ "string1", "string2"
{
"key1" : "value",
"key2" : 1,
"key3" : {"key1" : "value"},
"key4" : [
[
"string1",
"string2"
],
[
1,
2
],
...
],
"key5" : true,
"key6" : false,
"key7" : null,
...
}
正如您在右侧看到的,JSON的语法并不十分困难,但我有几个例外,因为我忘记了处理一些可能的结构组合。例如,在数组中可以有“string、number、object、array、true、false、null”,但在遇到异常之前,我的程序无法处理数组中的数组。所以一切都很好,直到我得到一个数组中包含数组的有效JSON对象
我想用一个JSON对象(我正在寻找)测试我的程序。在这次测试之后,我想确信我的程序能够毫无例外地处理地球上所有可能的有效JSON结构
我不需要在深度5左右的地方筑巢。我只需要嵌套深度2或最大深度3的东西。使用嵌套所有允许的基类型的所有基类型,在该基类型内。选择支持json的编程语言。 尝试加载您的json,失败时异常消息是描述性的 例如: Python:
import json, sys;
json.loads(open(sys.argv[1]).read())
生成:
import random, json, os, string
def json_null(depth = 0):
return None
def json_int(depth = 0):
return random.randint(-999, 999)
def json_float(depth = 0):
return random.uniform(-999, 999)
def json_string(depth = 0):
return ''.join(random.sample(string.printable, random.randrange(10, 40)))
def json_bool(depth = 0):
return random.randint(0, 1) == 1
def json_list(depth):
lst = []
if depth:
for i in range(random.randrange(8)):
lst.append(gen_json(random.randrange(depth)))
return lst
def json_object(depth):
obj = {}
if depth:
for i in range(random.randrange(8)):
obj[json_string()] = gen_json(random.randrange(depth))
return obj
def gen_json(depth = 8):
if depth:
return random.choice([json_list, json_object])(depth)
else:
return random.choice([json_null, json_int, json_float, json_string, json_bool])(depth)
print(json.dumps(gen_json(), indent = 2))
您是否考虑过对象中的转义字符和对象
{
"key1" : {
"key1" : "value",
"key2" : [
"String1",
"String2"
],
},
"key2" : "\"This is a quote\"",
"key3" : "This contains an escaped slash: \\",
"key4" : "This contains accent charachters: \u00eb \u00ef",
}
注:
\u00eb
和\u00ef
分别为。charachtersëandï问题不在于我的json。这是我的节目。我的程序处理到目前为止我测试过的所有JSON。每次出现异常时,我都会扩展它。我现在需要一些JSON示例,它包含了所有的组合,所以我可以测试我的程序是否一切正常。正如我在上面的文章中所看到的,这个JSON应该有一些所有允许类型的级联。你需要有效和无效的JSON示例吗?我需要一个所有可能的级联成员的有效示例,这些成员允许用于每个type@mahan我需要一个所有可能的级联成员的有效示例,每个类型都允许这些成员:这不太可能,因为显然有一个无限的数字。顺便问一下,“级联”是指“嵌套的”@Dombi Szabolcs:谢谢,这是一个有趣的生成器。但这不是我想要的。有无限多的组合,所以没有这样的组合。无论如何,如果您已经正确地实现了所有基本类型,那么您怎么可能无法正确地实现数组,因为数组只是[]
”中的基本类型列表?顺便说一句,没有所谓的“JSON对象”的已知概念“。有JSON字符串,然后是JavaScript值。如果要彻底测试库,包括错误处理,显然,您还需要无效JSON的示例。请查看该repo中的示例数据集和其他示例数据集。一些示例必须通过,一些示例必须失败:然后使用java
和JSON对象
标记您的问题。