[VC] 简易Json读取

本文介绍了布尔函数BOOLEasyJson_IsApproved用于检查JSON文本的有效性,以及EasyJson_GetString函数提取指定键的值。通过实例展示了如何确保JSON结构完整性和正确提取字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BOOL EasyJson_IsApproved(CString jsonText)
{
   int leftKuoHao = 0;
   int rightKuoHao = 0;
   int yinHao = 0;
   int len = jsonText.GetLength();
   char ch = 0;
   for (int i=0;i<len;i++)
   {
	   ch = jsonText.GetAt(i);
	   if ( ch == '{')
		leftKuoHao++;
	   else if ( ch == '}')
		rightKuoHao++;
	   else if ( ch == '\"')
		   yinHao++;
   }

   if ( leftKuoHao != rightKuoHao)
	return FALSE;

   if ( yinHao %2 !=0 )
	   return FALSE;
      
   return TRUE;
}

int EasyJson_GetString(CString jsonText,CString key,CString &valueStr)
{
	if ( !EasyJson_IsApproved(jsonText) )
	{
		return -1;
	}
	CString keyStr;
	int startPos = 0;
	int endPos = 0;
	int maoHaoPos = 0;
	keyStr.Format("\"%s\"",key);
	int keyLen = keyStr.GetLength();

	startPos = jsonText.Find(keyStr);
	if ( startPos < 0 )
	{		
		return -2;
	}
	maoHaoPos = jsonText.Find(":",startPos+keyLen);
	if ( maoHaoPos<0 )
	{
		return -3;
	}
	startPos = jsonText.Find("\"",maoHaoPos);
	if ( startPos<0)
	{
		return -4;
	}

	endPos = jsonText.Find("\"",startPos+1);
	if ( endPos<0)
	{
		return -5;
	}

	valueStr = jsonText.Mid(startPos+1,endPos-startPos-1);

	return 1;
}

====用例====

   CString jsonText = "{\"server\":\"ALL\",\"license\":{\"device_id\":\"000000000000015a\",\"product_id\":\"0000049a\",\"auth_key\":\"90650336387976801002993705216986\"}}";
    CString valueStr;

CString keyStr="product_id";
    int ret = EasyJson_GetString(jsonText,keyStr,valueStr);
    printf("ret=%d,key=%s,str=%s",ret,valueStr);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值