C語言可以通過調用第三方庫來解析JSON文件并將其中的文章和段落使用p標簽,代碼使用pre標簽。
首先需要下載并安裝JSON解析庫,例如cJSON。然后在程序中調用該庫的API來解析JSON文件,對于每個包含文章或段落的JSON節點,將其轉換為HTML標簽并輸出到目標文件中。
下面是一個簡單的示例代碼,假設我們要將名為"input.json"的JSON文件中的文章和段落使用p標簽,代碼使用pre標簽,并輸出到名為"output.html"的HTML文件中。
```c
#include#include#include#include "cJSON.h"
void process_json(cJSON *json, FILE *out);
int main(void) {
// 讀取JSON文件
char *json_string = NULL;
FILE *json_file = fopen("input.json", "r");
if (!json_file) {
fprintf(stderr, "Failed to open input file\n");
return EXIT_FAILURE;
}
fseek(json_file, 0L, SEEK_END);
long file_size = ftell(json_file);
rewind(json_file);
json_string = malloc(file_size + 1);
fread(json_string, sizeof(char), file_size, json_file);
fclose(json_file);
json_string[file_size] = '\0';
// 解析JSON
cJSON *json = cJSON_Parse(json_string);
if (!json) {
fprintf(stderr, "Failed to parse JSON\n");
return EXIT_FAILURE;
}
// 處理JSON并輸出HTML
FILE *html_file = fopen("output.html", "w");
if (!html_file) {
fprintf(stderr, "Failed to open output file\n");
return EXIT_FAILURE;
}
process_json(json, html_file);
fclose(html_file);
cJSON_Delete(json);
free(json_string);
return EXIT_SUCCESS;
}
// 處理JSON節點并輸出HTML
void process_json(cJSON *json, FILE *out) {
if (json->type == cJSON_Object) {
cJSON *tag = cJSON_GetObjectItem(json, "tag");
if (tag && tag->type == cJSON_String) {
// 如果是文章或段落節點,輸出p標簽
if (strcmp(tag->valuestring, "article") == 0 ||
strcmp(tag->valuestring, "paragraph") == 0) {
fprintf(out, "
"); cJSON *content = cJSON_GetObjectItem(json, "content"); if (content && content->type == cJSON_String) { fprintf(out, "%s", content->valuestring); } fprintf(out, "
"); } // 如果是代碼節點,輸出pre標簽 else if (strcmp(tag->valuestring, "code") == 0) { fprintf(out, ""); cJSON *content = cJSON_GetObjectItem(json, "content"); if (content && content->type == cJSON_String) { fprintf(out, "%s", content->valuestring); } fprintf(out, ""); } } cJSON *child = json->child; while (child) { process_json(child, out); child = child->next; } } } ``` 這段代碼先讀取JSON文件到內存中,然后解析該文件并調用process_json函數來處理JSON節點并輸出HTML標簽。process_json函數中通過cJSON_GetObjectItem函數獲取節點的標簽和內容,并根據標簽輸出對應的HTML標簽。最后,將處理后的HTML保存到目標文件中。 需要注意的是,以上代碼僅為示例,請根據實際需求進行修改和完善。