获取嵌套json中的所有列名

时间:2016-07-26 23:48:35

标签: java json apache-spark

我正在尝试读取嵌套的json文件。

有没有办法在这个json文件中存储所有列名。

class ReadData {
    public static void main(String args[]) throws Exception{

        SparkConf conf = new SparkConf().setAppName("Search").setMaster("local[*]");
        JavaSparkContext sc= new JavaSparkContext(conf);
        SQLContext sqlContext = new org.apache.spark.sql.SQLContext(sc);
        DataFrame df1 = sqlContext.read().json("TestData.json");
        df1.printSchema();
        String columns[]=df1.columns();
        int total_columns=columns.length;
        System.out.println("column names :");
        for(int i=0;i<total_columns;i++){
            System.out.println(columns[i]);
        }
   }

TestData.json的内容:

{
    "id":"1",
    "name": {
      "first_name":"Joe",
      "last_name":"Thomas"
    }
}

我的代码输出:

column names :

id
name

预期输出为:

column names :
id
name.first_name
name.last_name

1 个答案:

答案 0 :(得分:0)

以下是您的问题的可能解决方案。我试图处理一些场景,但这应该可以解决问题。

{  
   "id":"1",
    "name":{  
      "first_name":"Joe",
      "last_name":"Thomas"
   },
   "address":[  
      {  
         "first_line":"Joe",
         "city":{  
            "city_name":"Bangalore",
            "city_pin":650659
         }
      },
      {  
         "first_line":"Joe",
         "city":{  
            "city_name":"Bangalore",
            "city_pin":650659,
            "city_pin2":65065933
         }
      }
   ]
}

示例输入Json我已经采取:

address.first_line
address.city.city_name
address.city.city_pin
address.city.city_pin2
name.last_name
name.first_name
id

输出:

{{1}}