首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌套对象到关系格式

嵌套对象到关系格式
EN

Stack Overflow用户
提问于 2014-11-06 15:23:09
回答 2查看 1.3K关注 0票数 0

我有JSON数据的用户档案,我想最终分析用SPSS。目前我导入的数据在谷歌精化,运行一些数据清理。但是,我的问题是,原始的JSON由嵌套对象组成,例如,带有"companies“的"professional_experience”部分,其中包括几个子对象/数组(参见示例)。Google通过使用这些信息创建额外的行来处理这个问题。然而,这与“关系”(就SQL而言)视图/表结构是不一致的,我需要使用SPSS或Excel或其他任何工具来分析这些数据,因为还有其他子对象(学校、奖励等)。它们也是“愚蠢地”填充在高层"main“记录下面的行中,但它们之间没有直接(行/列)关系(考虑分析)。

在我看来,我需要将这些(子对象)列和行提取到自己的表中,并创建一些n:m关系,或者至少将其规范化为一个表(当然,通过接受其他未嵌套属性的冗余)。

最后,我想得到一个一致的表来对某些属性进行统计分析/聚类。我认为地图缩减在这里并不是一种选择。

有没有人知道如何处理这个问题,或者是否有更简单的方法直接处理JSON数据?

代码语言:javascript
运行
复制
{ "users": [
{
  "id": "123456_abcdef",
  "first_name": "Max",
  "last_name": "Mustermann",
  "display_name": "Max Mustermann",
  "page_name": "Max_Mustermann",
  "permalink": "https://www.xing.com/profile/Max_Mustermann",
  "employment_status": "EMPLOYEE",
  "gender": "m",
  "birth_date": {
    "day": 12,
    "month": 8,
    "year": 1963
  },
  "active_email": "max.mustermann@xing.com",
  "time_zone": {
    "name": "Europe/Copenhagen",
    "utc_offset": 2.0
  },
  "premium_services": [
    "SEARCH",
    "PRIVATEMESSAGES"
  ],
  "badges": [
    "PREMIUM",
    "MODERATOR"
  ],
  "wants": "einen neuen Job",
  "haves": "viele tolle Skills",
  "interests": "Flitzebogen schießen and so on",
  "organisation_member": "ACM, GI",
  "languages": {
    "de": "NATIVE",
    "en": "FLUENT",
    "fr": null,
    "zh": "BASIC"
  },
  "private_address": {
    "city": "Hamburg",
    "country": "DE",
    "zip_code": "20357",
    "street": "Privatstraße 1",
    "phone": "49|40|1234560",
    "fax": "||",
    "province": "Hamburg",
    "email": "max@mustermann.de",
    "mobile_phone": "49|0155|1234567"
  },
  "business_address": {
    "city": "Hamburg",
    "country": "DE",
    "zip_code": "20357",
    "street": "Geschäftsstraße 1a",
    "phone": "49|40|1234569",
    "fax": "49|40|1234561",
    "province": "Hamburg",
    "email": "max.mustermann@xing.com",
    "mobile_phone": "49|160|66666661"
  },
  "web_profiles": {
    "qype": [
      "http://qype.de/users/foo"
    ],
    "google+": [
      "http://plus.google.com/foo"
    ],
    "other": [
      "http://blog.example.org"
    ],
    "homepage": [
      "http://example.org",
      "http://other-example.org"
    ]
  },
  "instant_messaging_accounts": {
    "skype": "1122334455",
    "googletalk": "max.mustermann"
  },
  "professional_experience": {
    "primary_company": {
      "id": "1_abcdef",
      "name": "XING AG",
      "title": "Softwareentwickler",
      "company_size": "201-500",
      "tag": null,
      "url": "http://www.xing.com",
      "career_level": "PROFESSIONAL_EXPERIENCED",
      "begin_date": "2010-01",
      "description": null,
      "end_date": null,
      "industry": "AEROSPACE",
      "form_of_employment": "FULL_TIME_EMPLOYEE",
      "until_now": true
    },
    "companies": [
      {
        "id": "1_abcdef",
        "name": "XING AG",
        "title": "Softwareentwickler",
        "company_size": "201-500",
        "tag": null,
        "url": "http://www.xing.com",
        "career_level": "PROFESSIONAL_EXPERIENCED",
        "begin_date": "2010-01",
        "description": null,
        "end_date": null,
        "industry": "AEROSPACE",
        "form_of_employment": "FULL_TIME_EMPLOYEE",
        "until_now": true
      },
      {
        "id": "24_abcdef",
        "name": "Ninja Ltd.",
        "title": "DevOps",
        "company_size": null,
        "tag": "NINJA",
        "url": "http://www.ninja-ltd.co.uk",
        "career_level": null,
        "begin_date": "2009-04",
        "description": null,
        "end_date": "2010-07",
        "industry": "ALTERNATIVE_MEDICINE",
        "form_of_employment": "OWNER",
        "until_now": false
      },
      {
        "id": "45_abcdef",
        "name": null,
        "title": "Wiss. Mitarbeiter",
        "company_size": null,
        "tag": "OFFIS",
        "url": "http://www.uni.de",
        "career_level": null,
        "begin_date": "2007",
        "description": null,
        "end_date": "2008",
        "industry": "APPAREL_AND_FASHION",
        "form_of_employment": "PART_TIME_EMPLOYEE",
        "until_now": false
      },
      {
        "id": "176_abcdef",
        "name": null,
        "title": "TEST NINJA",
        "company_size": "201-500",
        "tag": "TESTCOMPANY",
        "url": null,
        "career_level": "ENTRY_LEVEL",
        "begin_date": "1998-12",
        "description": null,
        "end_date": "1999-05",
        "industry": "ARTS_AND_CRAFTS",
        "form_of_employment": "INTERN",
        "until_now": false
      }
    ],
    "awards": [
      {
        "name": "Awesome Dude Of The Year",
        "date_awarded": 2007,
        "url": null
      }
    ]
  },
  "educational_background": {
    "degree": "MSc CE/CS",
    "primary_school": {
      "id": "42_abcdef",
      "name": "Carl-von-Ossietzky Universtät Schellenburg",
      "degree": "MSc CE/CS",
      "notes": null,
      "subject": null,
      "begin_date": "1998-08",
      "end_date": "2005-02"
    },
    "schools": [
      {
        "id": "42_abcdef",
        "name": "Carl-von-Ossietzky Universtät Schellenburg",
        "degree": "MSc CE/CS",
        "notes": null,
        "subject": null,
        "begin_date": "1998-08",
        "end_date": "2005-02"
      }
    ],
    "qualifications": [
      "TOEFLS",
      "PADI AOWD"
    ]
  }
}

]}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-07 16:15:38

您应该能够使用gui导入JSON,在user{}对象下面选择(而不是在用户对象本身上),这样您就有了一些相当干净的“记录”行,这些行也保存了每个记录行的头信息,比如"__professional体验“等等。

使用示例data...make下载并导入此项目,一定会将网格视图更改为记录模式。(网格左上角)

示例OpenRefine项目,显示作为记录行导入的JSON:https://drive.google.com/file/d/0B533WzlrxWraQnF0NHN4anpFNHM/view?usp=sharing

从那里,您可以导出和更改模板的希望,甚至选择专业经验行,如果您愿意,连同用户id。

如果您需要处理批量导入JSON记录行,或者从数据端点或web服务导入JSON记录行,那么我建议下载并使用社区版本的宾得或Talend为you....but处理这一问题--您当然可以使用OpenRefine进行初始检查和对齐。(我更喜欢宾得,它在转换中有很好的动态右键预览记录行,而Martin更喜欢Talend)。

票数 0
EN

Stack Overflow用户

发布于 2014-11-07 13:30:43

我不确定是否正确地理解了您想要创建的格式,但我可以提供两条线索,您可以开始探索:

使用填充式

OpenRefine使您可以轻松地使用在记录中填写,因此存储在顶级主行中的信息将通过多个行携带到每个记录中。一旦填充了所需的字段,例如,用户(id)返回行模式,通过使用facet,只在数据库的每个表中导出所需行的子集。

模板导出

模板选项允许您以XML / JSON格式导出数据,以便嵌套元素。然而,这个特性并不支持一对多的关系。

如果这有帮助的话请告诉我们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26783024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档