色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json轉dictionary

謝彥文1年前6瀏覽0評論

C JSON常常用于在不同的編程語言之間傳遞數據,然而在某些場合下我們需要將C JSON數據轉換成對應的數據結構,比如在iOS開發中,我們通常會將C JSON轉換成NSDictionary格式。

在iOS開發中,我們可以使用NSJSONSerialization類中的JSONObjectWithData方法將C JSON數據轉換成NSDictionary格式。然而有時候我們需要使用第三方庫來解析C JSON,比如在C++或者Objective-C++中使用。

下面我們以RapidJSON庫為例,介紹如何將C JSON轉換成NSDictionary格式。

#include "rapidjson/document.h"
#include "rapidjson/prettywriter.h"
#include "rapidjson/stringbuffer.h"
using namespace rapidjson;
NSDictionary* convertJsonToDictionary(const char* jsonString)
{
Document document;
document.Parse(jsonString);
if (document.HasParseError()) {
printf("json parse error\n");
return NULL;
}
if (!document.IsObject()) {
printf("json not a object\n");
return NULL;
}
NSDictionary *dictionary = [NSDictionary dictionary];
for (Value::ConstMemberIterator itr = document.MemberBegin(); itr != document.MemberEnd(); ++itr) {
const char *key = itr->name.GetString();
if (itr->value.IsString())
{
NSString *value = [NSString stringWithUTF8String:itr->value.GetString()];
[dictionary setValue:value forKey:[NSString stringWithUTF8String:key]];
}
else if (itr->value.IsObject())
{
NSDictionary *subDictionary = [self convertJsonToDictionary:itr->value.GetString()];
[dictionary setValue:subDictionary forKey:[NSString stringWithUTF8String:key]];
}
else if (itr->value.IsArray())
{
NSArray *subArray = [self convertJsonToArray:itr->value.GetString()];
[dictionary setValue:subArray forKey:[NSString stringWithUTF8String:key]];
}
else if (itr->value.IsInt())
{
[dictionary setValue:@(itr->value.GetInt()) forKey:[NSString stringWithUTF8String:key]];
}
else if (itr->value.IsDouble())
{
[dictionary setValue:@(itr->value.GetDouble()) forKey:[NSString stringWithUTF8String:key]];
}
else if (itr->value.IsBool())
{
[dictionary setValue:@(itr->value.GetBool()) forKey:[NSString stringWithUTF8String:key]];
}
}
return dictionary;
}

上面是C++代碼示例,通過解析C JSON數據,然后分別處理字符串、對象、數組、整數、浮點數和布爾值,最終轉換成NSDictionary格式。

總之,無論何種編程語言,將C JSON轉換成目標數據結構都是開發中常見的需求,希望本文能夠對您有所幫助。