2015-05-28 4 views
-1

Пример преобразования формата csv в Json в android. Я нашел решение в Converting an CSV file to a JSON object in Java, но не работал, или мне ничего не хватает.конвертировать формат csv в Json в android

Заранее спасибо.

package com.example.readfilefromsdcard; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.Reader; 
import java.util.List; 

import org.codehaus.jackson.map.ObjectMapper; 

import com.opencsv.bean.ColumnPositionMappingStrategy; 
import com.opencsv.bean.CsvToBean; 
import com.opencsv.bean.HeaderColumnNameMappingStrategy; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

    public class MainActivity extends Activity { 

Button btnWriteSDFile; 
Button btnReadSDFile; 
String path = "/sdcard/mydocs/test.csv"; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    btnReadSDFile = (Button) findViewById(R.id.btnReadSDFile); 
    btnReadSDFile.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      try { 
       ConvertCsvToJson(path,"TestJavaBeans"); 
       // ConvertCsvToJson1(path); 
      } catch (Exception e) { 
       Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
} 

public void ConvertCsvToJson(String path, String clsName) throws IOException, ClassNotFoundException { 

    String pathToCsvFile = path; 
    String javaBeanClassName = "" + clsName; 
    final File file = new File(pathToCsvFile); 
    if (!file.exists()) { 
     System.out.println("The file you specified does not exist. path=" + pathToCsvFile); 
    } 
    Class<?> type = null; 
    try { 
     type = Class.forName(javaBeanClassName); 
    } catch (ClassNotFoundException e) { 
     System.out.println("The java bean you specified does not exist. className=" + javaBeanClassName); 
    } 

    HeaderColumnNameMappingStrategy<TestJavaBeans> strat = new HeaderColumnNameMappingStrategy<TestJavaBeans>(); 
    //strat.setType(type); 
    CsvToBean<TestJavaBeans> csv = new CsvToBean<TestJavaBeans>(); 
    List<TestJavaBeans> list = csv.parse(strat, new InputStreamReader(new FileInputStream(file))); 
    System.out.println(new ObjectMapper().writeValueAsString(list)); 

} 

public void ConvertCsvToJson1(String path) throws IOException, ClassNotFoundException { 

    final ColumnPositionMappingStrategy<TestJavaBeans > strategy = new ColumnPositionMappingStrategy<TestJavaBeans>(); 
    strategy.setType(TestJavaBeans .class); 
    strategy.setColumnMapping(new String[] { "name", "id", }); 
    final CsvToBean<TestJavaBeans > csvToBean = new CsvToBean<TestJavaBeans >(); 
    final List<TestJavaBeans > beanExamples; 
    try { 
     final Reader reader = new FileReader(path); 
     beanExamples = csvToBean.parse(strategy, reader); 
     System.out.println(new  ObjectMapper().writeValueAsString(beanExamples)); 
    } catch (IOException ex) { 
     throw new RuntimeException(ex); 
    } 
} 

} 

    package com.example.readfilefromsdcard; 

public class TestJavaBeans { 
     private String name; 
     private String id; 
     public String getName() { 
     return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public String getId() { 
    return id; 
} 
public void setId(String id) { 
    this.id = id; 
} 

}

Ссылочные библиотеки: джексон-все-1.9.0.jar и opencsv-3.3.jar

журнала: Не удалось найти метод java.beans.Introspector.getBeanInfo, ссылки из метод com.opencsv.bean.HeaderColumnNameMappingStrategy.loadDescriptors

+0

мы должны увидеть код чтобы рассказать о какой-либо проблеме. отправьте свой код – Sachu

+0

Я добавил все используемые коды и библиотеки. если вам нужна дополнительная информация, чем скажите мне –

ответ

0

Соединение, которое я предпочел для преобразования CSV в JSON выглядит следующим образом:

https://github.com/cparker15/csv-to-json?files=1

+0

Мне нужно в java. –

+0

Вы помечаете как Android, и теперь вы сказали мне, что нужно в java, пожалуйста, решите, что вы хотите. –

+0

извините за это, но мне нужно использовать собственный андроид с помощью java. –

0

В действительности нет универсального «преобразования»: JSON является иерархической структурой, а CSV - плоской. Вам нужно смоделировать объекты JSON и поля карты из CSV в объект JSON по одному за раз. Это скорее логическая проблема, чем кодирование.

+0

Я использую jackson-all-1.9.0.jar и opencsv-3.3.jar для отображения и преобразования. –

0

Я хотел бы предложить этот подход

создать «оболочку» класса Java, который имеет класс переменной List<TestJavaBeans> list

Затем с помощью Джексона преобразовать эту «обертку» для JSon

Смежные вопросы