public static void InitGoodInfo(string goodInfoList)
    {
        m_dicGoodInfos.Clear();
#if !UNITY_EDITOR && UNITY_ANDROID
        JsonData data = JsonMapper.ToObject(goodInfoList);
        for (int i = 0; i < data.Count; i++)
        {
            GoodInfo newGood = GoodInfo.ValueOf(data[i]);
            if (!m_dicGoodInfos.ContainsKey(newGood.goods_register_id))
            {
                m_dicGoodInfos.Add(newGood.goods_register_id, newGood);
            }
            else
            {
                LogModule.ErrorLog("key exist" + newGood.goods_register_id);
                break;
            }
        }
#else
        int curPos = goodInfoList.IndexOf("{") + 1;
        while (curPos > 0 && curPos < goodInfoList.Length)
        {
            int endPos = goodInfoList.IndexOf("}", curPos);
            LogModule.DebugLog(" endPos" + endPos);
            if (endPos < 0 && endPos <= curPos)
            {
                LogModule.ErrorLog(" parse good info list fail");
                break;
            }

            GoodInfo newGood = new GoodInfo(goodInfoList.Substring(curPos, endPos - curPos));
            LogModule.DebugLog("add goodInfo" + newGood.goods_register_id);
            if (!m_dicGoodInfos.ContainsKey(newGood.goods_register_id))
            {
                m_dicGoodInfos.Add(newGood.goods_register_id, newGood);
            }
            else
            {
                LogModule.ErrorLog("key exist" + newGood.goods_register_id);
                break;
            }
            curPos = goodInfoList.IndexOf("{", endPos) + 1;
        }
#endif

        foreach (KeyValuePair <string, GoodInfo> curPair in m_dicGoodInfos)
        {
            curPair.Value.WriteString();
        }
    }