コード例 #1
0
 private static void MergeRecur(JSONObject left, JSONObject right)
 {
     if (left.type == Type.NULL)
     {
         left.Absorb(right);
     }
     else if (left.type == Type.OBJECT && right.type == Type.OBJECT)
     {
         for (int i = 0; i < right.list.Count; i++)
         {
             string text = right.keys[i];
             if (right[i].isContainer)
             {
                 if (left.HasField(text))
                 {
                     JSONObject.MergeRecur(left[text], right[i]);
                 }
                 else
                 {
                     left.AddField(text, right[i]);
                 }
             }
             else if (left.HasField(text))
             {
                 left.SetField(text, right[i]);
             }
             else
             {
                 left.AddField(text, right[i]);
             }
         }
     }
     else if (left.type == Type.ARRAY && right.type == Type.ARRAY && right.Count <= left.Count)
     {
         for (int j = 0; j < right.list.Count; j++)
         {
             if (left[j].type == right[j].type)
             {
                 if (left[j].isContainer)
                 {
                     JSONObject.MergeRecur(left[j], right[j]);
                 }
                 else
                 {
                     left[j] = right[j];
                 }
             }
         }
     }
 }
コード例 #2
0
 public void Merge(JSONObject obj)
 {
     JSONObject.MergeRecur(this, obj);
 }