ios - Json ऑब्जेक्ट की सरणी में एकाधिक चाबियों के लिए समान मान कैसे जांचें?




loops swift3 calendar (2)

कृपया जांचें :

यह आपके JSON प्रारूप के लिए है

if let streams = parsedData["data"] as! [AnyObject]? {
    for stream in streams {
        let dict = stream as? [AnyHashable: Any]
        print(getValue(key: "H", dict: dict!))
        print(getValue(key: "L", dict: dict!))
        print(getValue(key: "X", dict: dict!))
    }
}

func getValue(key: String, dict: [AnyHashable: Any]) -> [Int] {
    return dict.filter { $0.value as? String == key }.flatMap { Int(String(describing: $0.key)) }
}

नीचे शब्दकोशों के लिए है

let dict = ["-": 4, 1: "X", 10: "H", 11: "X", 12: "X", 13: "X", 14: "X",
           15: "X", 16: "X", 17: "H", 18: "X", 19: "X", 2: "X", 20: "X",
           21: "X", 22: "X", 23: "L", 24: "H", 25: "X", 26: "L", 27: "-",
           28: "-", 29: "-", 3: "H", 30: "-", 4: "X", 5: "X", 6: "X", 7: "X",
           8: "X", 9: "X", "H": 4, "L": 2, "X": 20] as [AnyHashable : Any]

विकल्प 1 कुंजी को पास करें और तिथियों की तारीखें वापस करेंगी

    print(getValue(key: "H", dict: dict)) //[17, 10, 24, 3]
    print(getValue(key: "L", dict: dict)) //[26, 23]
    print(getValue(key: "X", dict: dict)) //[12, 25, 14, 20, 5, 15, 7, 11, 13, 16, 19, 22, 21, 9, 18, 2, 6, 4, 1, 8]

    func getValue(key: String, dict: [AnyHashable: Any]) -> [Int] {
        return dict.filter { $0.value as? String == key }.flatMap { $0.key as? Int}
    }

विकल्प 2 पास कई चाबियाँ पास करें और हर कुंजी के साथ जुड़े तारों के साथ शब्दकोश लौटेंगे

    print(getValue2(keys: ["H","L","X"], dict: dict))
    //["H": [17, 24, 3, 10], "L": [23, 26], "X": [14, 20, 13, 19, 21, 9, 6, 1, 12, 25, 5, 15, 7, 11, 16, 22, 18, 2, 4, 8]]

    func getValue2(keys: [String], dict: [AnyHashable: Any]) -> [String: [Int]] {
        var returnValue = [String: [Int]]()
        for key in keys {
            returnValue[key] = [Int]()
        }

        dict.forEach {
            if let v = $0.value as? String, returnValue[v] != nil, let k = $0.key as? Int {
                returnValue[v]!.append(k)
            }
        }
        return returnValue
    }

मैं Swift3 का उपयोग कर कैलेंडर पर काम कर रहा Swift3 । मुझे पता है कि विभिन्न कुंजी के लिए समान मूल्य सेट करना संभव है I

मुझे यह NSArray जो कि JSON ऑब्जेक्ट्स की Dictionary है:

if parsedData["status"] as! Int == 200 {

    if let Streams = parsedData["data"] as! [AnyObject]? {
       for Stream in Streams {
           print(Stream) 
       }



Stream result: {
"-" = 4;
1 = X;
10 = H;
11 = X;
12 = X;
13 = X;
14 = X;
15 = X;
16 = X;
17 = H;
18 = X;
19 = X;
2 = X;
20 = X;
21 = X;
22 = X;
23 = L;
24 = H;
25 = X;
26 = L;
27 = "-";
28 = "-";
29 = "-";
3 = H;
30 = "-";
4 = X;
5 = X;
6 = X;
7 = X;
8 = X;
9 = X;
H = 4;
L = 2;
X = 20;
blank = "";
classid = id;
classname = " (A)";
stdid = 1;
stdnm = "name"; }

यहां 1 से 31 महीने स्थिर होते हैं, महीने के आधार पर। एक्सएचएल पत्तियों, सामान्य पत्ते, और सामान्य हैं मुझे एक्स, एच, एल मूल्य और तिथियां प्राप्त करने की आवश्यकता है I

हालांकि, मुझे यह पता करने के लिए बिल्कुल तर्क नहीं है कि मान समान हैं या नहीं, फिर इसके मूल्य को उसी कुंजी में जोड़ें।

क्रिप्या मेरि सहायता करे। आपको धन्यवाद


मुझे लगता है कि इग्नासिओ क्या कह रहा है कि आपकी JSON फ़ाइल गलत है। आपके पास [] जब आपके पास {} होना चाहिए। [] सूचियों के लिए हैं, {} शब्दकोश के लिए हैं।

यहां बताया गया है कि आपकी JSON फ़ाइल कैसे दिखनी चाहिए, आपकी JSON फ़ाइल मेरे लिए भी लोड नहीं होगी:

{
    "maps": [
        {
            "id": "blabla",
            "iscategorical": "0"
        },
        {
            "id": "blabla",
            "iscategorical": "0"
        }
    ],
    "masks": {
        "id": "valore"
    },
    "om_points": "value",
    "parameters": {
        "id": "valore"
    }
}

फिर आप अपने कोड का उपयोग कर सकते हैं:

import json
from pprint import pprint

data = json.load(open('data.json'))

pprint(data)

डेटा के साथ, अब आप इस तरह के मान भी पा सकते हैं:

data["maps"][0]["id"]
data["masks"]["id"]
data["om_points"]

उनको आज़माएं और देखें कि क्या यह समझ में आता है या नहीं।





ios json loops swift3 calendar