JSON

Cocos2d-x学习(五):cocos2d-x解析json(使用libjson库)(3)

字号+ 作者:H5之家 来源:H5之家 2015-11-21 08:44 我要评论( )

很多时候我们需要json格式来存储数组,有可能是对象的数组,也可能是基本变量的数组,如果是对象数组的话,就需要在简单读法中的ParseJSON方法中添加一些对对象的申请和对链表的操作才能完成你想要的数据结构! 当

很多时候我们需要json格式来存储数组,有可能是对象的数组,也可能是基本变量的数组,如果是对象数组的话,就需要在“简单读法”中的ParseJSON方法中添加一些对对象的申请和对链表的操作才能完成你想要的数据结构!

当然另一种比较常用的用法是:只有“值”,没有“键”的数组,比如 ["value1","value2","value3"],这种格式是常用于socket链接中与服务器通信的,下面就分别写一个解析和格式化的两种方式:

a.解析
当然还是需要一个解析的函数用来输出和递归用的


[cpp]
<span style="font-size:16px;">void parseArrJSON(JSONNODE *n) 

    if (n == NULL) 
    { 
        CCLOG("Invalid JSON Node\n"); 
        return; 
    } 
     
    // Parser  
    JSONNODE_ITERATOR it = json_begin(n); 
    while (it != json_end(n)) { 
        if (*it == NULL) { 
            CCLOG("Invalid JSON Node\n"); 
            return; 
        } 
         
        if (json_type(*it) == JSON_ARRAY || json_type(*it) == JSON_NODE) { 
            parseArrJSON(*it); 
        } 
        else { 
            // 如果只是值没有键,则只需要获取即可  
            json_char *value = json_as_string(*it); 
            CCLOG("%s", value); 
            json_free(value); 
        } 
         
        ++it; 
    } 
     

</span> 
<span style="font-size:16px;">void parseArrJSON(JSONNODE *n)
{
    if (n == NULL)
    {
        CCLOG("Invalid JSON Node\n");
        return;
    }
   
    // Parser
    JSONNODE_ITERATOR it = json_begin(n);
    while (it != json_end(n)) {
        if (*it == NULL) {
            CCLOG("Invalid JSON Node\n");
            return;
        }
       
        if (json_type(*it) == JSON_ARRAY || json_type(*it) == JSON_NODE) {
            parseArrJSON(*it);
        }
        else {
            // 如果只是值没有键,则只需要获取即可
            json_char *value = json_as_string(*it);
            CCLOG("%s", value);
            json_free(value);
        }
       
        ++it;
    }
   
}
</span>用法很简单


[cpp]
<span style="font-size:16px;">char *arrJson = "[\"value1\",\"value2\",\"value3\"]"; 
    JSONNODE *an = json_parse(arrJson); 
    parseArrJSON(an); 
    json_delete(an);</span> 
<span style="font-size:16px;">char *arrJson = "[\"value1\",\"value2\",\"value3\"]";
    JSONNODE *an = json_parse(arrJson);
    parseArrJSON(an);
    json_delete(an);</span>


b.格式化

也就是拼接json字符串了

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • x解析json(使用libjson库)

    x解析json(使用libjson库)

    2015-10-01 17:39

网友点评