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;
        
        }
    

      

  • 相关阅读:
    GIT(6)----fork和clone的区别,fetch与pull的区别
    Linux的本地时间和网络时间同步
    ROS知识(19)----写一个简单的pluginlib例子
    JS中关于闭包和this的指向
    hasOwnProperty()与in操作符的区别
    js判断对象的属性是原型的还是实例的
    JavaScript函数的中实参个数和形参个数的获取
    justify-content 定义子元素在父元素水平位置排列的顺序
    flex弹性盒模型
    让子元素在父元素中水平居中align-items
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/9119939.html
Copyright © 2011-2022 走看看