【问题标题】:CSV compare with JSONCSV 与 JSON 比较
【发布时间】:2015-03-23 08:53:23
【问题描述】:

假设我有两个 CSV 文件。文件1定义了标准的csv数据文件&文件2是文件1&Json的映射文件 现在我想要的是我想映射这两个文件并将文件 1 的数据与 Json 进行比较。 & 将不匹配输出为 csv。

我如何做到这一点?

文件 1:

key,id,value,name,number
1,322,re43,dasu,555-456

文件 2:

Rsat_key,key
Retina_id,id
reason_value,value
real_name,name
work_ph,phone

json

{
    "Rsat_key":1,
    "Retina_id":322,
    "reason_value":,
    "real_name":dasu,
    "work_ph":,555-456,
}

【问题讨论】:

    标签: java json csv


    【解决方案1】:

    代码如下所示

     String csvFile = "sample.csv";
     BufferedReader br = null;
     String line = "";
     String cvsSplitBy = ",";
     try {
     br = new BufferedReader(new FileReader(csvFile));
     while ((line = br.readLine()) != null) {
     // use comma as separator
     String[] result = line.split(cvsSplitBy);
     System.out.println(" { Rsat_key: " + result[0] 
     + " , Retina_id:" + result[1] + ", reason_value:"+result[2]+", real_name:"+result[3]+", work_ph:"++result[4]+"}");
     }
    

    如果您想从 csv 动态分配键,那么您还必须读取该 csv。

    【讨论】:

    • 这是我在这里提供的示例文件。真实文件太大而无法手动分配。我现在正在搜索如何映射两个 csv 文件,显然不是手动的。
    • 你打算将 JSON 作为 Web 服务公开吗??
    • 我实际上只是在尝试这样做。
    【解决方案2】:

    创建一个类似的bean

    @XmlRootElement(name = "employee") 
    public class Employee {
    @XmlElement  
    private String employeeId;  
    @XmlElement  
    private String employeeName; 
    @XmlElement  
    private String jobType;
    @XmlElement     
    private String address; 
    @XmlElement  
    private Long salary;
    
    //setter and getter
    

    并将值分配给 bean,如果您使用的是 restful web 服务,则在端点使用 @Produces("application/json") 注释将生成 JSON。

    【讨论】:

      【解决方案3】:

      另一种选择是创建对象模型并使用 google gson(用于 json)和 beanio(用于 csv)来序列化和反序列化对象。

      https://sites.google.com/site/gson/gson-user-guide

      http://beanio.org/

      以 gson 为例

      public class Model1 {
         String field1;
         //getters and setters
      }
      

      然后

      Model1 model1 = new Gson().fromJson(YourfileReader);
      

      和 beanio 的想法是一样的。

      您可以更进一步,在您的对象上添加相等的方法以帮助轻松查找。

      希望能给你灵感。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-01
        • 2020-07-07
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        相关资源
        最近更新 更多