C語言將字符串轉json


示例代碼:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *strrpc(char *str,char *oldstr,char *newstr){
	/* 將一個字符串中的某些字符進行替換 str 需要替換的字符串 oldstr 舊的字符串 newstr 新的字符串 */ 
    char bstr[strlen(str)];//轉換緩沖區
    memset(bstr,0,sizeof(bstr));
 
    for(int i = 0;i < strlen(str);i++){
        if(!strncmp(str+i,oldstr,strlen(oldstr))){//查找目標字符串
            strcat(bstr,newstr);
            i += strlen(oldstr) - 1;
        }else{
        	strncat(bstr,str + i,1);//保存一字節進緩沖區
	    }
    }
 
    strcpy(str,bstr);
    return str;
} 

char *split(char * src,char * str){
	/* 傳入一個數組進行p和一個以什么進行分割的str,返回切片后的值 */ 
	
	int i = 0, j = 0;
    char tmp[128][128] = {0};
    char *p1 = (char *)malloc(1024);
    char joint_result[300];
 
    while((p1 = (char *)strchr(src, *str)) != NULL) //必須使用(char *)進行強制類型轉換
    {
        strncpy(tmp[i], src, strlen(src) - strlen(p1));
        src = p1 + 1;
        i ++;
    }
    strncpy(tmp[i], src, strlen(src)); 
 
 	//對分割后的結果再次進行拼接 
    for(j = 0; j <= i-1; j++){  //i-1因為不需要最后一個字段 
		if (j == 0){
			sprintf(joint_result,"%s%s%s","{\"",tmp[j],"\",");
		}else if (j != (i-1)){
			sprintf(joint_result,"%s%s%s%s",joint_result,"\"",tmp[j],"\",");
		}else{
			sprintf(joint_result,"%s%s%s%s",joint_result,"\"",tmp[j],"\"}");
		}				
	}
	
	return strrpc(joint_result,"=","\":\"");//調用strrpc將字符串中的【=】替換為【":"】並return最終結果
}
 
int main (void){

	char p[] = "name=laowang&id=001&money=1888.00&birthday=201808088888";
	char str[] = "&"; //分割的字符串 
	char * result;
	
    result = split(p,str);
    printf("%s",result); //輸出最終結果
 
    return 0;
}
dev-c++中執行結果:
	{"name":"laowang","id":"001","money":"1888.00"}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM