它是一个合适的JSON文件吗?

时间:2014-07-23 21:19:45

标签: java json jackson deserialization json-deserialization

我偶然发现了以下列方式构建的.json文件:

"property1":"graph_example"

"property2":false
"property3":true
"property4":null

{ "objectType": "some_type", "name": "name_1", "operation": "operation_1", "numericValue": 3}
{ "objectType": "some_type", "name": "name_2", "operation": "operation_2", "numericValue": 4}
{ "objectType": "some_type", "name": "name_3", "operation": "operation_3", "numericValue": 1, "dependencies": [{"name":"operation_1","amount":10},{"name":"operation_2","amount":10}] }

该文件描述了一个优先级图,其中name_3依赖于name_1name_2。我试图用Java对其进行反序列化(使用Jackson),但我认为它不是一个合适的JSON。元素不包含在任何类型的列表中,并且没有逗号分隔条目。有些元素不是必需的 - 如果元素没有依赖关系,那么依赖关系列表就会丢失。我尝试用来生成POJO的http://www.jsonschema2pojo.org/在此结构中找不到任何数据。或者它是一些特殊的JSON格式?

2 个答案:

答案 0 :(得分:3)

不,不是。

缺少封闭的{},有些项目缺少各自的密钥。

最后三行是三个独立的有效json文档,如果它们被{}括起来并且以逗号分隔,则前5行有效。

答案 1 :(得分:2)

它看似有效CSON ,但它需要在开头和结尾添加{} 。我跑了这个:

CSON.parseFileSync("test.cson");

......我得到了回复:

{ objectType: 'some_type',
  name: 'name_3',
  operation: 'operation_3',
  numericValue: 1,
  dependencies: 
   [ { name: 'operation_1', amount: 10 },
     { name: 'operation_2', amount: 10 } ] }

<击>


乍一看,看起来像一样有效CSON。但是,显然不是这样,基于事实上只有文件的最后一行才被实际成功解析。

当我尝试在文件内容周围添加{}时,为了让解析器将其视为一个完整的对象,我得到了这个结果:

{ [SyntaxError: unexpected {]
  location: 
   { first_line: 7,
     first_column: 0,
     last_line: 7,
     last_column: 0 },
  toString: [Function],
  code: '{\n"property1":"graph_example"\n\n"property2":false\n"property3":true\n"property4":null\n\n{ "objectType": "some_type", "name": "name_1", "operation": "operation_1", "numericValue": 3}\n{ "objectType": "some_type", "name": "name_2", "operation": "operation_2", "numericValue": 4}\n{ "objectType": "some_type", "name": "name_3", "operation": "operation_3", "numericValue": 1, "dependencies": [{"name":"operation_1","amount":10},{"name":"operation_2","amount":10}] }\n}',
  filename: '/home/mmkatz/test.cson' }

这似乎是因为文件中的少数几项应该是一个数组,但它们周围没有[]


最后,我将不得不说这是某种自定义格式,与JSON或CSON只有偶然的相似之处。