解析json数组对象

时间:2013-06-07 04:08:15

标签: c parsing arrays

我正在尝试解析json数组,我遇到了问题。

我的数组是这样的:

configure:{“id”:4,“userId”:107,“deviceMacAddress”:“00:06:66:30:02:3C”,“药物”:

[{ “ID”:11, “版本”:18, “姓名”: “NAME1”, “单元”: “毫克”, “形成”: “FOR1”, “日程表”:[1]}, { “ID”:45, “版本”:1, “名称”: “sdga” ,, “单元”: “毫克”, “形成”: “54234”, “日程表”:[0,1,2,3 ,4,5,6]}],

我能够访问药物数组并打印总数组,但无法访问数组内的对象。你可以使用C语言建议任何解决方案或任何例子吗?

1 个答案:

答案 0 :(得分:1)

我会给你一块骨头。当您找到表示文本中元素开头的符号时,请调用一个知道如何处理该类型元素的函数 - 哈希,数组,字符串,数字等(http://www.json.org/)。现在你想要处理像哈希这样的东西取决于你,而C使得很容易很容易地存储不同类型的值,但是基本上在每个部分中,你返回代表它的对象并且它变成一个整体表示刚刚解析的json的数据结构。

非常伪代码:

parseJson(char* json) {
  if json[0]=='['
    parseJsonArray(json+1)
  if json[0]=='{]
    parseJsonArray(json+1)
  if json[0]=='"'
    parseJsonString(json+1)
  ...etc...
}

parseJsonArray(char* json) {
  SomeSortOfList array = MakeListThing();
  while *json != ']' {
    if *json=='['
      push(array, parseJsonArray(json+1))
    if *json=='{'
      push(array, parseJsonHash(json+1))
    if *json=='"'
      push(array, parseJsonString(json+1))
  }
  return array
}

..和其他功能..