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

      

  • 相关阅读:
    星巴克——最单纯的SNS应用
    用地图说话:在商业分析与演示中运用Excel数据地图(全彩)
    Ext江湖
    两个概念模型及算法之间的关系
    PageRank 算法
    闭包用法:经典案例
    SNS营销——网商成功之道
    这就是搜索引擎:核心技术详解
    制作自己的数据地图
    认识数据地图
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/9119939.html
Copyright © 2011-2022 走看看