zoukankan      html  css  js  c++  java
  • JSON数据解析(自写)

    自写的JSON解析数据

    void setup() {
      Serial.begin(115200);
    
       char chArray[50] = "some characters";
       String str(chArray);
      //           {"ledmode":2,"cr":ff,"cg":00,"cb":234}
      //               2- 9       13-16    22-25  30-33
      String m=  "{"ledmode":2,"cr":ff,"cg":a,"cb":1}";
       JsontoString(m,"ledmode");//分割调用
      
        JsontoString(m,"cr");//分割调用
     
         JsontoString(m,"cg");//分割调用
       
          JsontoString(m,"cb");//分割调用
    }
     
    void loop()
    {  
     
    }
    
    /*
    函数说明: 从Json格式的String中,截取对应键值
    输入:  String 数据帧 String 键名
    输出:  int 类型的 键值
    示例;
      String m=  "{"ledmode":2,"cr":ff,"cg":a,"cb":1}";
      int a=JsontoString(m,"ledmode");//分割调用
    结果: a=2;
    */
    int  JsontoString(String zifuchuan,String fengefu)
     {
      fengefu="""+fengefu+"""; 
      int weizhi_KEY; //找查的位置
      int weizhi_DH; 
      String temps;//临时字符串
     weizhi_KEY = zifuchuan.indexOf(fengefu);//找到位置
     temps=zifuchuan.substring( weizhi_KEY+fengefu.length(), zifuchuan.length());//打印取第一个字符
     weizhi_DH = weizhi_KEY+fengefu.length()+ temps.indexOf(',');//找到位置
     if( temps.indexOf(',')==-1){ 
      // weizhi_DH = weizhi_KEY+fengefu.length()+ temps.indexOf('}');//找到位置
     weizhi_DH = zifuchuan.length()-1;
      }
     temps="";
      temps=zifuchuan.substring( weizhi_KEY+fengefu.length()+1,  weizhi_DH);//打印取第一个字符
      Serial.print(temps);
      Serial.print("---");
    
     return StringtoHex(temps);
      }
    
    /*
    说明 String 转 16进制对应的10进制数
    输入:  String
    输出:  int 
    示例:
    FF   255
    ff   255
    1    1
    */
    int StringtoHex(String temps)
      {
      int l=0;
      int p=1;
      for (int i = temps.length()-1; i >=0; i--) {
       if(temps[i]=='a'||temps[i]=='b'||temps[i]=='c'||temps[i]=='d'||temps[i]=='e'||temps[i]=='f'){
         l+=((int)(temps[i]-'a')+10)*p;
        p*=16;
       }
       else if(temps[i]=='A'||temps[i]=='B'||temps[i]=='C'||temps[i]=='D'||temps[i]=='E'||temps[i]=='F'){
         l+=((int)(temps[i]-'A')+10)*p;
        p*=16;
       }
       else if(temps[i]=='0'||temps[i]=='1'||temps[i]=='2'||temps[i]=='3'||temps[i]=='4'||temps[i]=='5'||temps[i]=='6'||temps[i]=='7'||temps[i]=='8'||temps[i]=='9')
       {
          l+=(int)(temps[i]-'0')*p;
        p*=16;
        
        }
       
     }
      Serial.println(l);
      return  l;
        
        }
    /*
    说明 String 转 10进制对应的10进制数
    输入:  String
    输出:  int 
    示例:
    1023  1023
    1    1
    */
        int StringtoInt(String temps)
      {
      int l=0;
      int p=1;
      for (int i = temps.length()-1; i >=0; i--) {
       if(temps[i]=='0'||temps[i]=='1'||temps[i]=='2'||temps[i]=='3'||temps[i]=='4'||temps[i]=='5'||temps[i]=='6'||temps[i]=='7'||temps[i]=='8'||temps[i]=='9')
       {
          l+=(int)(temps[i]-'0')*p;
        p*=10;
        
        }
       
     }
      Serial.println(l);
      return  l;
        
        }
    

      

  • 相关阅读:
    java.lang.OutOfMemoryError: GC overhead limit exceeded
    Ural 1146 Maximum Sum(DP)
    [算法系列之四]优先级队列
    Python源代码--整数对象(PyIntObject)的内存池
    3星|何帆《猜测与偏见》:社科书评集
    4星|《认识经济》:全面系统的经济学普及读物,鸿篇巨制,价格超贵
    3星|《东方启动点》:民营企业家们的故事,故事多分析概括少
    2星|《大师的管理课》:畅销书作家们的35篇励志散文
    3.5星|《蓝海战略2》:实施蓝海战略的具体工具与方法。案例牵强且偏老旧
    2星|《读懂华为30年》:基于公开资料的整理和肤浅的发挥
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/9119939.html
Copyright © 2011-2022 走看看