示例#1
0
        public void Add(JObject obj)
        {
            var topId = TsId.Create();

            foreach (var(key, value) in obj)
            {
                Analyze(topId, key, value);
            }
        }
示例#2
0
        private void Analyze(TsId topId, object key, JToken?value)
        {
            if (key is string s)
            {
                key = string.Intern(s);
            }

            switch (value)
            {
            case JObject obj:
            {
                var nextId = TsId.Create();
                _tuples.AddTuple(topId, key, nextId);
                foreach (var(ckey, cval) in obj)
                {
                    Analyze(nextId, ckey, cval);
                }

                break;
            }

            case JArray arr:
            {
                var arrId = TsId.Create();
                _tuples.AddTuple(topId, key, arrId);
                for (int idx = 0; idx < arr.Count; idx++)
                {
                    Analyze(arrId, idx, arr[idx]);
                }

                break;
            }

            default:
                _tuples.AddTuple(topId, key, InterpretValue((JValue)value));
                break;
            }
        }