-3

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

我的数组是这样的:

配置:{"id":4,"userId":107,"deviceMacAddress":"00:06:66:30:02:3C","medication":

[{"id":11,"version":18,"name":"name1","unit":"mg","forMed":"for1","schedule":[1]},{"id ":45,"version":1,"name":"sdga",,"unit":"mg","forMed":"54234","schedule":[0,1,2,3,4, 5,6]}],

我能够访问药物阵列并打印总阵列,但无法访问阵列内的对象。您能否建议使用 C 语言执行此操作的任何解决方案或示例?

4

1 回答 1

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
}

..和其他功能..

于 2013-06-07T04:31:27.633 回答