/** Create
         */
        public static void Convert(string a_in_jsonstring, System.Collections.Generic.List <JsonItem> a_out_list)
        {
            try{
                if (a_in_jsonstring.Length < 2)
                {
                    //不明。
                    Tool.Assert(false);
                    return;
                }

                if (a_in_jsonstring[0] != '[')
                {
                    //不明。
                    Tool.Assert(false);
                    return;
                }

                int t_index = 1;
                while (t_index < a_in_jsonstring.Length)
                {
                    switch (a_in_jsonstring[t_index])
                    {
                    case ']':
                    {
                        //終端。
                        Tool.Assert(t_index + 1 == a_in_jsonstring.Length);
                        return;
                    } break;

                    case ',':
                    {
                        //次の項目あり。
                        t_index++;
                    } break;
                    }

                    //値。
                    int t_value_size = 0;
                    {
                        switch (ValueType_FirstCharValueType.Get(a_in_jsonstring[t_index]))
                        {
                        case ValueType.StringData:
                        {
                            t_value_size = JsonStringLength.GetStringDataLength(a_in_jsonstring, t_index);
                        } break;

                        case ValueType.Calc_UnknownNumber:
                        case ValueType.SignedNumber:
                        case ValueType.UnsignedNumber:
                        case ValueType.FloatingNumber:
                        {
                            t_value_size = JsonStringLength.GetNumberLength(a_in_jsonstring, t_index);
                        } break;

                        case ValueType.AssociativeArray:
                        {
                            t_value_size = JsonStringLength.GetAssociateArrayLength(a_in_jsonstring, t_index);
                        } break;

                        case ValueType.IndexArray:
                        {
                            t_value_size = JsonStringLength.GetIndexArrayLength(a_in_jsonstring, t_index);
                        } break;

                        case ValueType.Calc_BoolDataTrue:
                        {
                            t_value_size = JsonStringLength.GetBoolDataTrueLength(a_in_jsonstring, t_index);
                        } break;

                        case ValueType.Calc_BoolDataFalse:
                        {
                            t_value_size = JsonStringLength.GetBoolDataFalseLength(a_in_jsonstring, t_index);
                        } break;

                        case ValueType.BinaryData:
                        {
                            t_value_size = JsonStringLength.GetBinaryDataLength(a_in_jsonstring, t_index);
                        } break;

                        case ValueType.Null:
                        {
                            t_value_size = JsonStringLength.GetNullLength(a_in_jsonstring, t_index);
                        } break;

                        default:
                        {
                            //不明。
                            Tool.Assert(false);
                            return;
                        } break;
                        }
                    }

                    //リストに追加。
                    if (t_value_size > 0)
                    {
                        JsonItem t_additem = new JsonItem();
                        {
                            t_additem.SetJsonString(a_in_jsonstring.Substring(t_index, t_value_size));
                        }

                        a_out_list.Add(t_additem);
                        t_index += t_value_size;
                    }
                    else
                    {
                        //不明。
                        Tool.Assert(false);
                        return;
                    }
                }
            }catch (System.Exception t_exception) {
                Tool.DebugReThrow(t_exception);
            }

            //不明。
            Tool.Assert(false);
            return;
        }
예제 #2
0
        /** Convert
         */
        public static void Convert(string a_in_jsonstring, System.Collections.Generic.Dictionary <string, JsonItem> a_out_list)
        {
            {
                if (a_in_jsonstring.Length < 2)
                {
                    //不明。

                                        #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                    DebugTool.Assert(false);
                                        #endif

                    return;
                }

                if (a_in_jsonstring[0] != '{')
                {
                    //不明。

                                        #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                    DebugTool.Assert(false);
                                        #endif

                    return;
                }

                int t_index = 1;
                while (t_index < a_in_jsonstring.Length)
                {
                                        #pragma warning disable 0162
                    switch (a_in_jsonstring[t_index])
                    {
                    case '}':
                    {
                        //終端。

                                                        #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                        DebugTool.Assert((t_index + 1) == a_in_jsonstring.Length);
                                                        #endif

                        return;
                    } break;

                    case ',':
                    {
                        //次の項目あり。
                        t_index++;
                    } break;
                    }
                                        #pragma warning restore

                    //名前。
                    string t_name_string;
                    {
                        if ((a_in_jsonstring[t_index] == '"') || (a_in_jsonstring[t_index] == '\''))
                        {
                            int t_name_size = JsonStringLength.StringData.GetLength(a_in_jsonstring, t_index, a_in_jsonstring.Length);
                            if (t_name_size >= 2)
                            {
                                t_name_string = a_in_jsonstring.Substring(t_index + 1, t_name_size - 2);
                                t_index      += t_name_size;
                            }
                            else
                            {
                                //不明。

                                                                #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                                DebugTool.Assert(false);
                                                                #endif

                                return;
                            }
                        }
                        else
                        {
                            //不明。

                                                        #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                            DebugTool.Assert(false);
                                                        #endif

                            return;
                        }
                    }

                    //「:」。
                    if (a_in_jsonstring[t_index] == ':')
                    {
                        t_index++;
                    }
                    else
                    {
                        //不明。

                                                #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                        DebugTool.Assert(false);
                                                #endif

                        return;
                    }

                    //値。
                    int t_value_size = 0;
                    {
                                                #pragma warning disable 0162
                        switch (ValueType_FirstCharValueType.Get(a_in_jsonstring[t_index]))
                        {
                        case ValueType.StringData:
                        {
                            t_value_size = JsonStringLength.StringData.GetLength(a_in_jsonstring, t_index, a_in_jsonstring.Length);
                        } break;

                        case ValueType.Calc_UnknownNumber:
                        case ValueType.SignedNumber:
                        case ValueType.UnsignedNumber:
                        case ValueType.FloatingNumber:
                        case ValueType.DecimalNumber:
                        {
                            t_value_size = JsonStringLength.Number.GetLength(a_in_jsonstring, t_index, a_in_jsonstring.Length);
                        } break;

                        case ValueType.AssociativeArray:
                        {
                            t_value_size = JsonStringLength.AssociateArray.GetLength(a_in_jsonstring, t_index, a_in_jsonstring.Length);
                        } break;

                        case ValueType.IndexArray:
                        {
                            t_value_size = JsonStringLength.IndexArray.GetLength(a_in_jsonstring, t_index, a_in_jsonstring.Length);
                        } break;

                        case ValueType.Calc_TrueBoolData:
                        {
                            t_value_size = JsonStringLength.TrueBoolData.GetLength(a_in_jsonstring, t_index, a_in_jsonstring.Length);
                        } break;

                        case ValueType.Calc_FalseBoolData:
                        {
                            t_value_size = JsonStringLength.FalseBoolData.GetLength(a_in_jsonstring, t_index, a_in_jsonstring.Length);
                        } break;

                        case ValueType.BinaryData:
                        {
                            t_value_size = JsonStringLength.BinaryData.GetLength(a_in_jsonstring, t_index, a_in_jsonstring.Length);
                        } break;

                        case ValueType.Null:
                        {
                            t_value_size = JsonStringLength.Null.GetLength(a_in_jsonstring, t_index, a_in_jsonstring.Length);
                        } break;

                        default:
                        {
                            //不明。

                                                                #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                            DebugTool.Assert(false);
                                                                #endif

                            return;
                        } break;
                        }
                                                #pragma warning restore
                    }

                    //リストに追加。
                    if (t_value_size > 0)
                    {
                        JsonItem t_additem = new JsonItem();
                        {
                            t_additem.SetJsonString(a_in_jsonstring.Substring(t_index, t_value_size));
                        }

                        a_out_list.Add(t_name_string, t_additem);
                        t_index += t_value_size;
                    }
                    else
                    {
                        //不明。

                                                #if (DEF_BLUEBACK_JSONITEM_ASSERT)
                        DebugTool.Assert(false);
                                                #endif

                        return;
                    }
                }
            }

            //不明。

                        #if (DEF_BLUEBACK_JSONITEM_ASSERT)
            DebugTool.Assert(false);
                        #endif

            return;
        }