我的JSON字符串格式为:
{
"count":3,
"data":[
{
"a":{"ax":1}
},
{
"b":{"bx":2}
},
{
"c":{"cx":4}
}
]
}
Run Code Online (Sandbox Code Playgroud)
该data数组包含许多a和b和c.而且没有其他种类的对象.
如果count==0,data应该是一个空数组[].
我正在使用https://github.com/hoxworth/json-schema来验证Ruby中的这些JSON对象.
require 'rubygems'
require 'json-schema'
p JSON::Validator.fully_validate('schema.json',"test.json")
Run Code Online (Sandbox Code Playgroud)
该schema.json方法是:
{
"type":"object",
"$schema": "http://json-schema.org/draft-03/schema",
"required":true,
"properties":{
"count": { "type":"number", "id": "count", "required":true },
"data": { "type":"array", "id": "data", "required":true,
"items":[
{ "type":"object", "required":false, "properties":{ "a": { "type":"object", "id": "a", "required":true, "properties":{ "ax": { "type":"number", "id": "ax", "required":true …Run Code Online (Sandbox Code Playgroud) 当我想在C结构中存储动态数据数组时,有两种方法可以编写它:
typedef struct {
int row;
int col;
char* data;
} item1;
Run Code Online (Sandbox Code Playgroud)
要么
typedef struct {
int row;
int col;
char data[];
} item2;
Run Code Online (Sandbox Code Playgroud)
他们俩都会工作.但他们在我的64位Mac OSX上有一些差异,使用gcc Apple LLVM 5.1版(clang-503.0.38):
sizeof(item1) is 16
sizeof(item2) is 8
Run Code Online (Sandbox Code Playgroud)
为什么有区别?而且,这两种实现还有什么不同?
完整的测试代码是:
#include <stdio.h>
typedef struct {
int row;
int col;
char* data;
} item1;
typedef struct {
int row;
int col;
char data[];
} item2;
int main() {
printf("%d %d\n", sizeof(item1), sizeof(item2));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
16 8
Run Code Online (Sandbox Code Playgroud)