`
datamachine
  • 浏览: 162442 次
社区版块
存档分类
最新评论

集算器解析动态JSON入库

    博客分类:
  • DB
阅读更多

  来源:http://bbs.csdn.net/topics/390611005 。

  系统采集的JSON格式数据(s.json)如下:

  {

    “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;\">…… </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;\">……</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;\">……</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&;SONY ERIC(RAPIDO)",

                            "CREDIT": 16,

                            "TIME": "1-24 Hours",

                            "INFO": "<p style=\"text-align: center;\">……</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″

}

  现需要按照JSON数据内容,将相应节点下的属性值更新到数据库的对应表中,需要更新的2张表如下:

Create table [dbo].[Groups]

(

  [ID] [int] IDENTITY(1,1) NOT NULL,                   –id

  [Groupname] [nvarchar] (50) not null default(”),    –名称

  [groupid] [int] not null default(0),

 CONSTRAINT [PK_Groups_id] PRIMARY KEY CLUSTERED

(

    [id] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

 

CREATE TABLE [dbo].[Services](

  [id]    [int] IDENTITY(1,1) NOT NULL,                             –id

  [Serviceid] [int] not null default(0),           

  [Servicename] [nvarchar] (50) not null default(”),   

  [groupid] [int] not null default(0),                

  [Credit] [decimal] not null default(0.00),

  [Time] [nvarchar] (50) not null default(”),

  [INFO] [nvarchar] (3000) not null default(”),

  [Network] [nvarchar] (100) not null default(‘none’),

  [Mobile] [nvarchar] (100) not null default(‘none’),

  [Provider] [nvarchar] (100) not null default(‘none’),

  [PIN] [nvarchar] (100) not null default(‘none’),

  [KBH] [nvarchar] (100) not null default(‘none’),

  [MEP] [nvarchar] (100) not null default(‘none’),

  [PRD] [nvarchar] (100) not null default(‘none’),

  [Type] [nvarchar] (100) not null default(‘none’),

  [Locks] [nvarchar] (100) not null default(‘none’),

  [Reference] [nvarchar] (100) not null default(‘none’),

  [isstatus] [nvarchar] (1) not null default(’0′),

  [remark] [nvarchar] (255) not null default(”),

  [Pricingid] [int] not null default(0),

 CONSTRAINT [PK_Services_id] PRIMARY KEY CLUSTERED

(

    [id] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

 

  其中SERVICES下属性名即为groupid,如3,5,8,10,剩余字段与属性名一一对应。由于LIST和SERVICES下的属性名不固定,给解析带来了难度。区别于一般高级语言,集算器支持动态数据结构和集合运算,实现并不困难,脚本如下:



 

   A1:以字符串读入JSON文件内容,并使用import@j()将字符串转为行列式带有层次的序表。



 

   A2-A3:根据两个目标表,创建空序表,用于存储解析结果后一次更新到数据库。

  A4-B4:循环序表,在B4中计算LIST下节点数量。

  B5-C6:循环获取LIST节点内容,并在C6中计算SERVICES下节点数量。



 

   C7-D8:循环获取SERVICES节点下属性名和属性值。



 

    D9-D10:将解析后结果分别写回到A2A3中的空序表中。



 

   A11:以groupid为主键,将A2内容更新到groups表中。



 

   A12:以Serviceid为主键,将A3内容更新到services表中。



 

  • 大小: 122.7 KB
  • 大小: 7.9 KB
  • 大小: 13.1 KB
  • 大小: 32.4 KB
  • 大小: 56 KB
  • 大小: 6.6 KB
  • 大小: 30.5 KB
0
2
分享到:
评论

相关推荐

    json解析器源码

    C++作为一款强大的编程语言,有许多库可以用来解析JSON,其中之一就是我们这里提到的开源JSON解析器。这个解析器是用C++编写的,其源码提供了深入理解JSON解析过程的宝贵机会。 首先,我们要明白JSON的基本结构。...

    VB6解析json类库

    标题中的“VB6解析json类库”指的是一个用于Visual Basic 6(VB6)环境的JSON解析工具。JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式,广泛应用于Web服务和应用程序之间的数据传输。这个类库...

    idea Java 解析json文件并导入mysql数据库

    本教程将详细讲解如何在Idea中使用Java解析JSON文件,并将数据有效地导入到MySQL数据库。 首先,我们需要理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器...

    C++解析json字符串

    在文件"JsonParse"中,可能包含了使用C++解析JSON字符串的示例代码,包括如何导入库、创建JSON对象、解析字符串、访问数据以及处理异常情况。通过学习和理解这部分代码,你可以熟练地在C++项目中处理JSON数据。

    C#中Json 解析类库,使用dictionary 解析未知字段的对象

    总结来说,使用Json.NET库和Dictionary在C#中解析JSON是一种灵活且实用的方法,尤其适用于处理动态或未知结构的JSON数据。只需注意类型转换以及处理可能的异常,如找不到Key或类型不匹配。通过这种方式,你可以轻松...

    Android Studio解析JSON对象

    本主题聚焦于“Android Studio解析JSON对象”,这是一个非常关键且实用的技能,因为JSON作为一种轻量级的数据交换格式,广泛应用于网络通信和数据存储。JSON对象可以方便地表示各种复杂的数据结构,包括数组、键值...

    json-lib包(Java解析JSON的所有依赖包)

    3. **解析JSON字符串**:通过`JSONObject.fromObject()`或`JSONArray.fromObject()`方法将JSON格式的字符串转换为Java对象。 4. **序列化Java对象**:使用`JSONObject.toJSONString()`或`JSONArray.toJSONString()`...

    JSON数据构造及解析详解

    3. **解析JSON**:使用cppJson库提供的函数将JSON字符串转换为JSON对象。cppJson库的`Json::parse()`方法可以完成这个任务,例如: ```cpp Json::Value root; std::ifstream file("json_data.json"); file &gt;&gt; ...

    java解析json需要的包

    3. **解析JSON**:使用库提供的方法将JSON字符串解析为Java对象。 4. **访问数据**:通过Java对象的属性访问解析后的数据。 5. **序列化**:如果需要将Java对象转换回JSON,同样使用库的方法进行操作。 在开发过程...

    flex解析json的swc包(entity-flex-v1-02)及例子

    示例代码通常包括了导入库、创建JSON对象、解析JSON字符串以及如何在Flex组件中显示或操作这些数据的步骤。 “Lib”目录则可能包含了SWC库文件本身。在Flex项目中,开发者可以通过将这个SWC文件添加到类路径来引入...

    Go-一个可选的GoJSON解析器不需要schema迄今为止最快

    在Go的标准库`encoding/json`中,解析JSON数据通常涉及两个主要方法:`json.Unmarshal()` 和 `json.NewDecoder().Decode()`. 这些方法在处理大型JSON文档时可能会比较慢,因为它们提供了完整的错误检查和类型安全。...

    Android中Json数据解析

    在Android中,我们通常使用Google提供的Gson库或者org.json库来解析JSON数据。Gson库能够直接将JSON字符串转化为Java对象,反之亦然,非常方便。而org.json库提供了JSONObject和JSONArray类,可以手动解析和构建JSON...

    C++解析 json 示例

    JsonCpp是一个开源的C++库,它提供了处理JSON数据结构的功能,可以用于解析JSON字符串或文件,生成JSON数据等操作。在Windows平台下,为了能够使用JsonCpp,首先需要下载该库的源代码。JsonCpp的源码可以在其官方...

    as3corelib.swc及解析json的例子

    在本文中,我们将深入探讨如何在Flex 4.5中使用as3corelib库来解析JSON数据。as3corelib是一个强大的ActionScript 3库,它包含了一系列实用工具类,其中一个重要的功能就是处理JSON(JavaScript Object Notation)...

    json封装解析cjson

    2. **解析JSON**:使用`cJSON_Parse()`函数解析JSON字符串,返回一个`cJSON`结构体指针,表示JSON的根对象。 3. **遍历JSON对象**:通过`cJSON_GetObjectItem()`函数获取JSON对象的子项,如果是数组,可以用`cJSON_...

    JSON类解析数据文件

    3. 解析JSON字符串:使用`org.json`库的`JSONObject`或`JSONArray`类解析JSON内容。 - 对于对象(Object): ```java JSONObject jsonObject = new JSONObject(jsonString); String name = jsonObject.getString...

    Json解析工具

    1. 解析JSON字符串:将JSON格式的文本转换为可操作的数据结构,如JavaScript对象或Python字典。 2. 序列化对象:将JavaScript对象或Python字典等数据结构转换成JSON格式的字符串,以便在网络上传输。 3. 验证JSON:...

    C# json解析 v1.0

    解析JSON意味着将JSON字符串转化为C#对象。使用`com.force.json v1.0`库,你可能需要以下步骤: 1. 引入库:在项目中添加对`com.force.json v1.0`的引用。 2. 创建C#类模型:根据JSON结构定义对应的C#类。例如,...

    http传输与json解析

    2. 解析JSON字符串:使用`JSONObject`或`JSONArray`类来解析JSON。例如,对于一个JSON对象,可以使用`new JSONObject(jsonString)`创建一个对象实例;对于JSON数组,使用`new JSONArray(jsonString)`。 3. 访问数据...

Global site tag (gtag.js) - Google Analytics