欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

golang c json解析json

錢衛國2年前8瀏覽0評論

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常用于前后端數據傳輸和存儲。在golang中,使用標準庫中的encoding/json包可以方便地處理JSON數據。本文將介紹如何使用golang和C語言來解析JSON數據。

首先,我們來看一下golang中如何解析JSON數據。encoding/json包中提供了Marshal()和Unmarshal()兩個函數,用于將JSON數據轉換為golang的結構體或將golang的結構體轉換為JSON數據。下面是一個簡單的例子:

type Person struct {
Name string `json:"name"`
Age  int    `json:"age"`
}
jsonStr := `{"name":"Tom","age":18}`
var p Person
err := json.Unmarshal([]byte(jsonStr), &p)
if err != nil {
fmt.Println(err)
}
fmt.Println(p.Name, p.Age)

在上面的例子中,我們定義了一個Person結構體,并使用json標簽指定了JSON字符串上的字段名。然后使用json.Unmarshal()函數將JSON字符串解析為Person結構體。如果解析失敗,會返回一個非空的錯誤對象。最后打印出Person對象的Name和Age屬性。

接下來,我們來看一下C語言中如何解析JSON數據。C語言中沒有現成的JSON解析庫,但我們可以使用第三方庫cJSON來解析JSON數據。cJSON是一個輕量級的JSON解析庫,其實現簡單、使用方便。下面是一個簡單的例子:

#include <stdio.h>
#include <cJSON.h>
int main()
{
char *jsonStr = "{\"name\":\"Tom\",\"age\":18}";
cJSON *root = cJSON_Parse(jsonStr);
if(root == NULL)
{
printf("parse error!\n");
return -1;
}
cJSON *name = cJSON_GetObjectItem(root, "name");
cJSON *age = cJSON_GetObjectItem(root, "age");
if(name == NULL || age == NULL)
{
printf("get item error!\n");
cJSON_Delete(root);
return -1;
}
printf("%s %d\n", name->valuestring, age->valueint);
cJSON_Delete(root);
return 0;
}

在上面的例子中,我們首先定義了一個JSON字符串,然后使用cJSON_Parse()函數將其解析為cJSON對象。如果解析失敗,cJSON_Parse()函數會返回NULL。接著,我們使用cJSON_GetObjectItem()函數獲取JSON對象中的對應字段值。如果獲取失敗,cJSON_GetObjectItem()函數會返回NULL。最后將字段值打印出來并釋放內存。