簡體   English   中英

在目標C中解析json

[英]parsing json in objective C

我的json數組是這樣的:

[
    {
        "result_names": [
            "val"
        ]
    },
    {
        "result_names": [
            "val"
        ]
    },
    {
     "result_names": [
            "count",
            "sum"
        ]
    }
]

我的輸出應該只是一個帶有字符串val的數組,在數組索引0、1和2處的count和sum(順序無關緊要),並且應該刪除重復項(“ val”重復兩次)。 我能夠消除重復項,但是我不太確定在單獨的索引中第三次出現result_names的情況。 到目前為止,這是我的代碼:

上面的json存儲為:

NSDictionary* json;
NSMutableArray *resultList = [json valueForKey:@"result_names"];
NSArray *res = [[NSSet setWithArray: resultList] allObjects];

現在, NSLog(@"%@", res); 給我:

        (
        val
    ),
        (
        count,
        sum
    )
)

現在,“ res.count”返回2。我想要val,count和sum在不同的索引中。 請幫助。

您的-valueForKey:調用返回的是數組數組,因此+setWithArray:可以對相同的數組進行重復數據刪除,但不能對單個元素進行重復數據刪除。 您將必須執行以下操作:

NSArray *resultLists = [json valueForKey:@"result_names"];
NSMutableSet *results = [NSMutableSet set];
for (NSArray *resultList in resultLists) {
    [results addObjectsFromArray:resultList];
}

您可以使用鍵值編碼集合運算符 “ @distinctUnionOfArrays”:

NSArray *json = @[
                        @{@ "result_names": @[@"val"]},
                        @{@ "result_names": @[@"val"]},
                        @{@ "result_names": @[@"sum", @"count"]},
                        ];

NSArray *res = [json valueForKeyPath:@"@distinctUnionOfArrays.result_names"];
NSLog(@"%@", res);

輸出:

(
    val,
    count,
    sum
)

(請注意,您的頂級JSON對象是數組,而不是字典。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM