1. 程式人生 > >Objective-C JSON字串解析

Objective-C JSON字串解析

先將JSON串轉換成NSString,再轉化為NSData,後再轉為NSDictionary,再取出其中的NSArray,最後獲取所需NSDictionary元素值:

- (void)parseJSON: (void *)param1 {
    const char *p_json = NULL;

    if (param1) {
        p_json = param1;
        //NSLog(@"p_json: %s", p_json);
        
        NSString *pauseAdJson = [[NSString alloc] initWithUTF8String:p_json];
        //NSLog(@"pauseAdJson: %@", pauseAdJson);
        
        //json解析
        NSData *jsonData = [pauseAdJson dataUsingEncoding:NSUTF8StringEncoding];
        //NSLog(@"jsonData: %@", jsonData);
        
        NSError *err;
        
        NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData
                                                            options:NSJSONReadingMutableContainers
                                                              error:&err];
        
        if(err) {
            NSLog(@"json解析失敗:%@",err);
        }
        //NSLog(@"jsonDict: %@", jsonDict);
        
        NSArray *pauseAdArray = [jsonDict objectForKey:@"pause_ad"];
        //NSLog(@"pauseAdArray: %@", pauseAdArray);
        
        NSURL *pauseAdImageUrl = [NSURL URLWithString: [[pauseAdArray objectAtIndex:0] objectForKey:@"url"]];
        
        // UI的操作必須要到主執行緒做
        [self performSelectorOnMainThread:@selector(pauseAdDownloadandView:) withObject:pauseAdImageUrl waitUntilDone:NO];

    }
}

- (void)pauseAdDownloadandView: (NSURL *)imageUrl {
    //在playerview中心展現,佔playerview一半的大小
    CGRect pauseAdViewRect = CGRectMake([playerview bounds].size.width/4, 
                                        [playerview bounds].size.height/4, 
                                        [playerview bounds].size.width/2, 
                                        [playerview bounds].size.height/2);
    
    pauseAdView = [[UIImageView alloc] initWithFrame:pauseAdViewRect];
    pauseAdView.layer.masksToBounds = YES;
    pauseAdView.layer.cornerRadius = 5.0f;
    [pauseAdView setBackgroundColor:[UIColor blackColor]];
    
    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:imageUrl]];
    pauseAdView.image = image;
    
    [playerview addSubview:pauseAdView];
}


相關推薦

Objective-C JSON字串解析

先將JSON串轉換成NSString,再轉化為NSData,後再轉為NSDictionary,再取出其中的NSArray,最後獲取所需NSDictionary元素值: - (void)parseJSON: (void *)param1 { const char *p

hive中自定義函式及自定義json字串解析函式

hive中如何定義自己的函式 寫一個Java 程式,實現想要的函式功能 1.匯入hive安裝目錄的lib目錄的包 2新建一個類繼承 UDF類 3.過載父類中evaluate方法; 4.寫下自己的邏輯 package test; import

hive 中 json 字串解析之 get_json_object 與 json_tuple

    在技術對app進行埋點時,會講多個欄位存放在一個數組中,因此模型呼叫資料時,要對埋點資料進行解析,以作進一步的清洗。本文將介紹解析json字串的兩個函式:get_json_object和json_tuple。 表結構如下: 一、get_json_o

hive中json字串解析之get_json_object與json_tuple

在技術對app進行埋點時,會講多個欄位存放在一個數組中,因此模型呼叫資料時,要對埋點資料進行解析,以作進一步的清洗。本文將介紹解析json字串的兩個函式:get_json_object和json_tuple。 表結構如下: 一、get_json_object 函式的作用

Objective-C屬性字串NSAttributedString

NSAttributedString是Objective-C中的屬性字串類,GitHub上也有很多第三方,用得較多的是TTTAttributedLabel,這裡給大家介紹一下系統NSAttributedString類來實現富文字,並可實現點選事件,同時點選事件可

C# JSON字串序列化與反序列化

using System.Runtime.Serialization.Json; using System.Runtime.Serialization; 二、C#將物件序列化成JSON字串 publicstring GetJsonString()   {       List<Product>

Objective-C擷取字串時emoji表情的處理

我們在開發中會經常遇到限制字串長度的情況,如輸入框限制輸入字數,我們會經常使用substringToIndex進行字串擷取,這樣做有一個潛在的問題,那就是當擷取的index恰好是一個emoji表情的時候,因為一個emoij在字串的length並不等於1,這樣就會

JSON字串解析(得到屬性的值)

只要把JSON原理理解好,解析很容易。 記住幾個點: JSON 語法規則(w3School) JSON 語法是 JavaScript 物件表示法語法的子集。 資料在名稱/值對中(基本格式)資料由

Mysql json字串 解析成對應欄位

欄位名 :mobile ,內容:{"contactName":"段XX","contactJobTitle":"待確認","contactMobile":"131XXXXXXX"}。解決方法:JSON_EXTRACT執行SQL: 查詢結果:結果帶引號,並不能真正使用。解決方法

Objective-C字串NSString過濾HTML標籤的方法

- (NSString *)removeHTML:(NSString *)html { NSScanner *theScanner; NSString *text = nil; theScanner = [NSScanner scannerWithString:h

多重json字串解析

折騰了一天,才算是搞定這個簡單的問題。 資料來源: [{"total":"2","list":[{"Fiber_Core_ID":"2","Fiber_ID":"1 ","Spectrum":"1-2 ","ServiceType":"收費 ","Remark":null

JAVA Json字串解析替換

一,JAVA中的 \r\n 替換 如果Eclipse控制檯輸出   Hello\r\nWorld 那麼實際上該字串內容為  Hello\\r\\nWorld 為什麼 \r\n 沒有換行而是直接輸出來了? 原因是該字串的實際內容是 Hello\\r\\nWorld  而不是H

C語言字串解析程式

#include <stdio.h> #include <string.h> char s[]="direct usb://Canon/MX420%20series?serial=312E7C&interface=1 \"Canon MX420 series\" \"Cano

c/c++使用cJson解析未知內容的json字串

關於json我這裡就不做綴飾,這裡給出連結百度百科json 我這裡只介紹下json中的符號格式 ① { } : 雙括號表示一個json物件。例如:{"name":"ljl"},這代表一個name為ljl的物件 ②[ ] : 中括號表示陣列。例如:[{"name","ljl"},{"m

C++ 使用jsoncpp 封裝及解析 json字串(包含複雜陣列)

#include <json/json.h> #include <string> #include <iostream> using namespace std; int main() { //std::string strValue = "{\"na

C++ Jsoncpp 解析json字串

使用方法 下載原始碼解壓之後得到jsoncpp-src-0.5.0資料夾,我們只需要jsoncpp的標頭檔案和cpp檔案,其中jsonscpp的標頭檔案位於jsoncpp-src-0.5.0\include\json,jsoncpp的cpp檔案位於jsoncpp-src-0.5.0\sr

C# webapi 解析 json字串

步驟一:最好是自己建立一個和json包中欄位一樣的實體類接收資料(推薦),也可以用原有的實體類 using System; using System.Collections.Generic; using System.Linq; using System.Threading

C#解析JSON字串總結

JSON檔案讀取到記憶體中就是字串,.NET操作JSON就是生成與解析JSON字串。 操作JSON通常有以下幾種方式: 1. 原始方式:按照JSON字串自己來解析。 2. 通用方式【★★★★★】:這種方式是使用開源的類庫Newtonsoft.Json(下載地址ht

C++/MFC使用JSONCPP解析JSON字串

第一步:首先下載jsoncpp原始碼檔案,程式碼可以從github下載 https://sourceforge.net/projects/jsoncpp/?source=typ_redirect 下載原始碼後解壓後的目錄如下: 再依次開啟\makefiles\vs71,雙

C++ jsoncpp解析json字串

使用方法 下載原始碼解壓之後得到jsoncpp-src-0.5.0資料夾,我們只需要jsoncpp的標頭檔案和cpp檔案,其中jsonscpp的標頭檔案位於jsoncpp-src-0.5.0\include\json,jsoncpp的cpp檔案位於jsonc