GetValue() public method

public GetValue ( string name ) : string
name string
return string
示例#1
0
        void Populate(JsonValue json, RootElement root, JsonValue data)
        {
            if (json.ContainsKey("title"))
            {
                root.Caption = json["title"];
            }

            JsonValue jsonRoot = null;

            try {
                jsonRoot = json["root"];
            } catch (Exception) {
                Console.WriteLine("Bad JSON: could not find the root element - " + json.ToString());
                return;
            }

            foreach (JsonObject section in jsonRoot)
            {
                var sec = new Section(section.s("caption"), section.s("footer"));

                if (section.ContainsKey("elements"))
                {
                    foreach (JsonObject elem in section["elements"])
                    {
                        var dataForElement = data;
                        var bindExpression = elem.s("bind");
                        if (bindExpression != null)
                        {
                            try {
                                if (data != null && data.JsonType == JsonType.Object)
                                {
                                    var bind = elem.s("bind");
                                    if (data != null && !string.IsNullOrEmpty(bind) && data.ContainsKey(bind))
                                    {
                                        dataForElement = data[bind];
                                    }
                                }
                                else if (bindExpression.StartsWith("#"))
                                {
                                    dataForElement = _controller.GetValue(bindExpression.Replace("#", ""));
                                }
                            } catch (Exception) {
                                Console.WriteLine("Exception when binding element " + elem.ToString());
                            }
                        }

                        _parseElement(elem, sec, dataForElement);
                    }
                }
                else if (section.ContainsKey("iterate") && data != null)
                {
                    string iterationname = section["iterate"];
                    string emptyMessage  = section.ContainsKey("empty") ? section["empty"].CleanString() : "Empty";
                    var    iterationdata = string.IsNullOrEmpty(iterationname) ? (JsonArray)data : (JsonArray)data[iterationname];
                    var    template      = (JsonObject)section["template"];

                    var items = iterationdata.ToList();
                    if (items.Count > 0)
                    {
                        foreach (JsonValue v in items)
                        {
                            _parseElement(template, sec, v);
                        }
                    }
                    else
                    {
                        sec.Add(new EmptyListElement(emptyMessage));
                    }
                }
                else if (section.ContainsKey("iterateproperties") && data != null)
                {
                    string iterationname = section["iterateproperties"];
                    string emptyMessage  = section.ContainsKey("empty") ? section["empty"].CleanString() : "Empty";

                    var iterationdata = string.IsNullOrEmpty(iterationname) ? (JsonObject)data : (JsonObject)data[iterationname];
                    var template      = (JsonObject)section["template"];
                    var items         = iterationdata.Keys;
                    if (items.Count > 0)
                    {
                        foreach (string v in items)
                        {
                            var obj = new JsonObject();
                            obj.Add(v, iterationdata[v]);
                            _parseElement(template, sec, obj);
                        }
                    }
                    else
                    {
                        sec.Add(new EmptyListElement(emptyMessage));
                    }
                }
                root.Add(sec);
            }
        }