Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

writing .json file and read that file in Android

i m writing .json file and i want to read that file, but the problem is, when i try to read whole file as string it adds the space before and after every character and just because of extra chars it couldn't read json.

the Json format is

[{"description1":"The ThinkerA bronze sculpture by Auguste Rodin. It depicts a man in sober\nmeditation battling with a powerful internal struggle.","description2":"Steve JobsFounder of Apple, he is widely recognized as a charismatic pioneer of\nthe personal computer revolution.","description3":"Justin BieberBorn in 1994, the latest sensation in music industry with numerous\nawards in recent years."}]

but it gives weired response like: [ { " d e s c r i p t i o n 1 " : " T h e .....

to trim extra spaces i refered to this, but stil didnt work: Java how to replace 2 or more spaces with single space in string and delete leading spaces only

i m using this code

File folderPath = Environment.getExternalStorageDirectory();
File mypath=new File(folderPath, "description.json");
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = null;
reader = new BufferedReader(new FileReader(mypath));
char[] buf = new char[1024];
int numRead=0;

while((numRead=reader.read(buf)) != -1)
{
    String readData = String.valueOf(buf, 0, numRead);
    fileData.append(readData);
    buf = new char[1024];
}
String response = fileData.toString();

the "response" string contains weird response

so can anyone help me ?

for writing into file ,i m using :

FileOutputStream fos = new FileOutputStream(mypath);
DataOutputStream dos = new DataOutputStream(fos);
dos.writeChars(response);
like image 506
SML Avatar asked Jan 08 '13 16:01

SML


People also ask

How do I convert a JSON file to readable?

If you need to convert a file containing Json text to a readable format, you need to convert that to an Object and implement toString() method(assuming converting to Java object) to print or write to another file in a much readabe format. You can use any Json API for this, for example Jackson JSON API.


2 Answers

writeChars writes each character as two bytes.

http://docs.oracle.com/javase/6/docs/api/java/io/DataOutputStream.html#writeChars(java.lang.String)

http://docs.oracle.com/javase/6/docs/api/java/io/DataOutputStream.html#writeChar(int)

Writes a char to the underlying output stream as a 2-byte value, high byte first. If no exception is thrown, the counter written is incremented by 2.
like image 154
auselen Avatar answered Sep 20 '22 16:09

auselen


Write below method for Write Json File, Here params is a File Name and mJsonResponse is a Server Response.

For Create Files into Internal Memory of Application

public void mCreateAndSaveFile(String params, String mJsonResponse) {
    try {
        FileWriter file = new FileWriter("/data/data/" + getApplicationContext().getPackageName() + "/" + params);
        file.write(mJsonResponse);
        file.flush();
        file.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

For Read Data From Json File, Here params is File Name.

public void mReadJsonData(String params) {
    try {
        File f = new File("/data/data/" + getPackageName() + "/" + params);
        FileInputStream is = new FileInputStream(f);
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        String mResponse = new String(buffer);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
like image 29
Dipak Keshariya Avatar answered Sep 19 '22 16:09

Dipak Keshariya