小编Por*_*jaz的帖子

在 Python 中将嵌套的 JSON 转换为 CSV 文件

我知道这个问题已经被问过很多次了。我尝试了几种解决方案,但无法解决我的问题。

我有一个大的嵌套 JSON 文件 (1.4GB),我想把它弄平,然后将其转换为 CSV 文件。

JSON 结构是这样的:

{
  "company_number": "12345678",
  "data": {
    "address": {
      "address_line_1": "Address 1",
      "locality": "Henley-On-Thames",
      "postal_code": "RG9 1DP",
      "premises": "161",
      "region": "Oxfordshire"
    },
    "country_of_residence": "England",
    "date_of_birth": {
      "month": 2,
      "year": 1977
    },
    "etag": "26281dhge33b22df2359sd6afsff2cb8cf62bb4a7f00",
    "kind": "individual-person-with-significant-control",
    "links": {
      "self": "/company/12345678/persons-with-significant-control/individual/bIhuKnFctSnjrDjUG8n3NgOrl"
    },
    "name": "John M Smith",
    "name_elements": {
      "forename": "John",
      "middle_name": "M",
      "surname": "Smith",
      "title": "Mrs"
    },
    "nationality": "Vietnamese",
    "natures_of_control": [
      "ownership-of-shares-50-to-75-percent"
    ],
    "notified_on": "2016-04-06"
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道这很容易用pandas模块完成,但我不熟悉它。

已编辑

所需的输出应该是这样的:

company_number, address_line_1, locality, …
Run Code Online (Sandbox Code Playgroud)

python csv json data-conversion

6
推荐指数
3
解决办法
4万
查看次数

Neo4j返回嵌套的JSON

我的Neo4j数据库包含家谱关系.

我想以嵌套的JSON格式提取数据,如下所示:

{  
"firstname":"Jon",
"lastname":"Smith",
"parents":[  
  {  
     "firstname":"Anna",
     "lastname":"Smith",
     "parents":[  
        {  
           "furstname":"Peter",
           "lastname":"Doe",
           "parents":[  
              {  
                 "firstname":"Jessica",
                 "lastname":"Doe"
              },
              {  
                 "firstname":"Clayton",
                 "lastname":"Doe"
              }
           ]
        },
        {  
           "firstname":"Nell",
           "lastname":"Gordon",
           "parents":[  
              {  
                 "firstname":"Jessica",
                 "lastname":"Roberts"
              },
              {  
                 "firstname":"Randy",
                 "lastname":"Roberts"
              }
           ]
        }
     ]
  }
]
}
Run Code Online (Sandbox Code Playgroud)

为了形象化它.

我尝试了以下查询:

MATCH path = (p:Person)-[r:PARENT_OF*1..3]-(k:Person) 
WHERE k.id = '1887' 
UNWIND r as rel 
RETURN StartNode(rel).firstname, rels(path), EndNode(rel).firstname
Run Code Online (Sandbox Code Playgroud)

与py2neo库一样:

dumps(graph.run(query).data())
Run Code Online (Sandbox Code Playgroud)

但是JSON并没有像我想要的那样嵌套.

是否有一个查询可以帮助我实现这一点,或者我应该用其他编程语言进行嵌套?

neo4j cypher py2neo

5
推荐指数
1
解决办法
2338
查看次数

Hibernate Rest状态码:200但实体未保存

我正在尝试使用Hibernate和Jersey保存实体.

我尝试发送的JSON是:

{
"firstname":"Jon",
"middlename":"J",
"lastname":"Smith",
"dob":"10-10-1990",
"gender":"male"
}
Run Code Online (Sandbox Code Playgroud)

当我用Postman发送它时,我得到Status: 200 OK但是记录没有保存在数据库中.

我使用的数据库是Neo4j.

这是我的PersonDAO班级:

package com.Neo4jRestAPI;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

import org.hibernate.HibernateException;

import com.google.gson.Gson;

public class PersonDAO {

    public void addPerson(Person person){

        try {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistence");
            EntityManager em = emf.createEntityManager();
            EntityTransaction tx = em.getTransaction();
            tx.begin();

            Person p = new Person();

            p.setFirstname(person.getFirstname());
            p.setMiddlename(person.getMiddlename());
            p.setLastname(person.getLastname());
            p.setDob(person.getDob());
            p.setGender(person.getGender());

            em.persist(p);
            em.flush();     
            tx.commit();
            em.clear(); 
            em.close(); 
            emf.close();
            }
        catch ( Exception e ) { …
Run Code Online (Sandbox Code Playgroud)

java hibernate neo4j hibernate-ogm

5
推荐指数
1
解决办法
772
查看次数

Neo4j使用带有空值的MERGE

我知道这个问题之前已被问过几次,但答案并没有解决我的问题.我正在尝试执行此查询:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM
'file:///C:/Users/Zona5/Documents/Neo4j/checkIntel/import/personaldata.csv' AS line1
MERGE (a:Address1 {address_name1:line1.address1})
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:Cannot merge node using null property value for address_name1.

其他人建议使用:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM
'file:///C:/Users/Zona5/Documents/Neo4j/checkIntel/import/personaldata.csv' AS line1
MERGE (a:Address1)
 ON CREATE SET a.address_name1=line1.address1
 ON MATCH SET a.address_name1=line1.address1
Run Code Online (Sandbox Code Playgroud)

但是,如果节点具有多个属性,则此解决方案有效.就我而言,它只有address_name1财产.

有没有办法解决这个问题,比如在查询MERGE或其他解决方案之前用查询中的单词替换空值?

csv null neo4j cypher

3
推荐指数
2
解决办法
3220
查看次数

标签 统计

neo4j ×3

csv ×2

cypher ×2

data-conversion ×1

hibernate ×1

hibernate-ogm ×1

java ×1

json ×1

null ×1

py2neo ×1

python ×1