首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

(100分)json存放到数据库有关问题。 急(大家给力啊)

2013-10-16 
(100分)json存放到数据库问题。在线等 急急急!!!(大家给力啊)最近做一个网站需要从另外一个网站的api获取js

(100分)json存放到数据库问题。在线等 急急急!!!(大家给力啊)
最近做一个网站需要从另外一个网站的api获取json数据然后存放到自己的数据库。可是本人对于json操作一窍不通,所以请教各位大神。 废话不多说了 代码如下
json文件内容 我已经清理一大部分相同结构的数据:
(里面主要就是imei的Service 列表 我把它放到数据库2张表里面groups跟Services )


{
    "SUCCESS": [
        {
            "MESSAGE": "IMEI Service List",
            "LIST": {
                "MOVISTAR SPAIN": {
                    "GROUPNAME": "MOVISTAR SPAIN",
                    "SERVICES": {
                        "3": {
                            "SERVICEID": 32,
                            "SERVICENAME": "MOVISTAR NOKIA INSTANTE",
                            "CREDIT": 4,
                            "TIME": "1-30 Minutes",
                            "INFO": "<p style="text-align: center;"><span style="color: #ff0000;" data-mce-mark="1">SERVICIO INSTANTE DE 0-10 MINS PARA NOKIAS MOVISTAR???No dct3/4???</span></p>\r\n<p style="text-align: center;"><span style="color: #ff0000;" data-mce-mark="1">CON GUIDADO SERIA C ???mayoria son20 digitos</span></p>\r\n<p style="text-align: center;">?????é?¨?????o&nbsp;?????ˉ20???:?<span style="font-size: medium;">&nbsp;<strong>C?3????(c2 c5)???<strong>Nokia 7230</strong></strong></span></p>\r\n<p style="text-align: center;"><span style="color: #ff0000;" data-mce-mark="1"><strong>SERIA ASHA 100, 101, 311, 500 y todos los de estas series</strong></span></p>\r\n<p style="text-align: center;"><span style="color: #ff0000;" data-mce-mark="1"><strong>&nbsp;Y WINDOWS PHONE &nbsp;Lumia</strong></span></p>",
                            "Requires.Network": "None",
                            "Requires.Mobile": "None",
                            "Requires.Provider": "None",
                            "Requires.PIN": "None",
                            "Requires.KBH": "None",
                            "Requires.MEP": "None",
                            "Requires.PRD": "None",
                            "Requires.Type": "None",
                            "Requires.Locks": "None",
                            "Requires.Reference": "None"
                        },
                        "8": {
                            "SERVICEID": 77,
                            "SERVICENAME": "MOVISTAR NOKIA 20 NCK",


                            "CREDIT": 12,
                            "TIME": "1-30 Minutes",
                            "INFO": "<p style="text-align: center;"><span style="font-size: small; color: #ff0000;"><strong>ALL NOKIA MOVISTAR SPAIN 20 DIGITS ,</strong></span><strong style="color: #ff0000; font-size: small;">NOT SUPPORTED LUMIA 820&nbsp;</strong></p>\r\n<p style="text-align: center;"><strong style="color: #ff0000; font-size: small;">Para Confirma si es 20 nck o no ,check info de movil con programa infinity ,descarga desde pagina aportado</strong></p>\r\n<p style="text-align: center;">&nbsp;</p>",
                            "Requires.Network": "None",
                            "Requires.Mobile": "None",
                            "Requires.Provider": "None",
                            "Requires.PIN": "None",
                            "Requires.KBH": "None",
                            "Requires.MEP": "None",
                            "Requires.PRD": "None",
                            "Requires.Type": "None",
                            "Requires.Locks": "None",
                            "Requires.Reference": "None"
                        }
                    }
                },
                "VODAFONE SPAIN": {
                    "GROUPNAME": "VODAFONE SPAIN",
                    "SERVICES": {
                        "5": {
                            "SERVICEID": 50,
                            "SERVICENAME": "VODAFONE NOKIA BB5 SL3",
                            "CREDIT": 5,
                            "TIME": "1-60 Minutes",
                            "INFO": "<p style="text-align: center;"><strong><span style="font-size: medium; color: #ff0000;">Nokia lumia, nokia 100, 610 y nokias 20 digitos no soportados!</span></strong></p>\r\n<p style="text-align: center;"><span style="color: #ff0000; font-size: small;"><strong>Nokia vodafone instante en horario de la tienda</strong></span></p>\r\n<p style="text-align: center;"><span style="color: #ff0000; font-size: small;"><strong>20???? ?????????o???LUMIA?????ˉ???</strong></span></p>\r\n<p style="text-align: center;"><span style="color: #ff0000; font-size: small;"><strong>&nbsp;</strong></span></p>",


                            "Requires.Network": "None",
                            "Requires.Mobile": "None",
                            "Requires.Provider": "None",
                            "Requires.PIN": "None",
                            "Requires.KBH": "None",
                            "Requires.MEP": "None",
                            "Requires.PRD": "None",
                            "Requires.Type": "None",
                            "Requires.Locks": "None",
                            "Requires.Reference": "None"
                        },
                        "10": {
                            "SERVICEID": 95,
                            "SERVICENAME": "VODAFONE SONY&amp;SONY ERIC(RAPIDO)",
                            "CREDIT": 16,
                            "TIME": "1-24 Hours",
                            "INFO": "<p style="text-align: center;"><span style="color: #ff0000; font-size: medium;">VODAFONE PHONE ,NO NOKIA Y WINDOWN PHONE,NO IPHONE? </span></p>\r\n<p style="text-align: center;"><span style="color: #ff0000; font-size: medium;">SAMSUNG CODIGO NO LLEVA DEFREEZE</span></p>",
                            "Requires.Network": "None",
                            "Requires.Mobile": "None",
                            "Requires.Provider": "None",
                            "Requires.PIN": "None",
                            "Requires.KBH": "None",
                            "Requires.MEP": "None",
                            "Requires.PRD": "None",
                            "Requires.Type": "None",
                            "Requires.Locks": "None",
                            "Requires.Reference": "None"
                        }
                    }


                }
            }
        }
    ],
    "apiversion": "2.0.0"
}


下面是sql数据库的的2张表的结构:
这里就把需要的字段全部列出来: group的名称是唯一的。然后2张表根据groupid关联

[解决办法]
JOSN数据是什么 不了解,我想说的是,如果是文本,就存文本到数据库中,如果是 文件 就用blod存
[解决办法]
Json 是JavaScript的对象。
格式(名称 / 值对):{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }
直接放一个字段里边吧。
[解决办法]
先把json转成对象,然后写入数据库。
http://bbs.csdn.net/topics/390214298
[解决办法]
定义和你的json字符串对于的类。然后把json字符串反序列化成对象,最后按照对象建表,再把对象属性存入相应的字段中。
偷懒的话,可以把json字符串直接反序列化为Dictionary。

总之,这是一个体力活。
json的格式非常好懂。
[解决办法]
下载一个 Newtonsoft.Json.dll
找以下说明,将json转换成对象.
跟踪监视一下通过json转换成的对象你就大悟了.
Dictionary 也是键值对 key:object,value:object ,josn也是键值对
注意Dictionary也是object
[解决办法]
"SERVICES":?{
    "3":?{

这里面的 "3":没有一点规律可循,你至少给点约束吧,例如是否肯定是个位数字且不重复,如果完全是装饰品,那就用正则先移除,否则无法转换到特定对象上处理。
------解决方案--------------------


参考下:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/d6481d7b-6981-4c3c-9701-988fdc887c48/load-json-type-data-to-sql-server?forum=transactsql
[解决办法]
JSON字符串存数据库,使用的时候取出json字符串 反序列化为相应的List<class>对象,linq操作
[解决办法]
我觉得你有必要二次处理下,因为你的Json原文如果直接转换到对象,那个对象类型构造会很复杂,不利于导入到数据库。
比如那个"LIST"属性,按照你的表设计,应该是后面为数组形式,表示一个个的group,但是它却以普通属性的形式存在,因此无法映射到数组中;再看"SERVICES"属性也是,里面都是一个个属性表示,而非数组形式,Json里面的数组是由中括号[]来表示的,而不是大括号{}。
有一种类型Dictionary<string,string>可以用来初次处理,你的Json可以匹配到该类型,之后在对内部的每个value进行Json转换到对象。
[解决办法]
把json字符串解析成对象 在存放到数据库
[解决办法]
按照你的思路先分组,转换城实体后,在进行操作比较容易
[解决办法]
JSON->转换成对象-》再转换成SQL-》存入数据库。
吃饱了撑得啊,直接字符串或数据流保存到数据库VARCHAR就行。取出来直接给JS前台就能用,干嘛做这么多封了又拆的,JSON本来就是对象。
[解决办法]
把json转换成datatable不就好了?网上找一个方法
[解决办法]
楼主你还没解决啊
[解决办法]
在无模式的json或者xml面前,关系数据库的思维模式早已经崩溃了。你应该把NoSQL看做一个技术方向,而不要硬塞在关系数据库里边。
[解决办法]
使用fastCSharp也可以这样定义class

        class x1
        {
            public x2[] SUCCESS;
        }
        class x2
        {
            public string MESSAGE;
            public x3[] SPAINS;
            private object LIST
            {
                set
                {
                    SPAINS = value != null ? ((fastCSharp.setup.cSharp.ajax.jsonNode)value).Dictionary.Values.getArray(node => fastCSharp.setup.cSharp.ajax.parseJson.Get<x3>(node)) : null;
                }
            }
        }
        class x3
        {
            public string GROUPNAME;
            public x4[] SERVICES_;
            private object SERVICES
            {
                set
                {
                    SERVICES_ = value != null ? ((fastCSharp.setup.cSharp.ajax.jsonNode)value).Dictionary.Values.getArray(node => GetSERVICES(node)) : null;
                }
            }
            private static x4 GetSERVICES(fastCSharp.setup.cSharp.ajax.jsonNode node)
            {
                System.Collections.Generic.Dictionary<string, fastCSharp.setup.cSharp.ajax.jsonNode> dictionary = node.Dictionary;
                string Requires = "Requires.";
                foreach (string key in dictionary.Keys.getArray())
                {
                    if (key.StartsWith(Requires)) dictionary[key.Substring(Requires.Length)] = dictionary[key];
                }
                return fastCSharp.setup.cSharp.ajax.parseJson.Get<x4>(node);
            }
        }


        class x4
        {
            public int SERVICEID;
            public string SERVICENAME;
            int groupid;
            public decimal CREDIT;
            public string TIME;
            public string INFO;
            public string Network;
            public string Mobile;
            public string Provider;
            public string PIN;
            public string KBH;
            public string MEP;
            public string PRD;
            public string Type;
            public string Locks;
            public string Reference;
        }

热点排行