小编Gre*_* Su的帖子

如何为对象数组编写JSON模式?

我的JSON字符串格式为:

{
    "count":3,
    "data":[
        {
            "a":{"ax":1}
        },
        {
            "b":{"bx":2}
        },
        {
            "c":{"cx":4}
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

data数组包含许多abc.而且没有其他种类的对象.

如果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)

ruby json jsonschema

22
推荐指数
1
解决办法
3万
查看次数

C结构中char*和char []的差异

当我想在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)

c dynamic-arrays

3
推荐指数
1
解决办法
144
查看次数

标签 统计

c ×1

dynamic-arrays ×1

json ×1

jsonschema ×1

ruby ×1