2016-01-21 2 views
-4

У меня есть файл JSon мне нужен файл класса Об этомкак читать JSon файл из папки активов в андроиде

{ 
    "CountryDetail":[ 
    { 
     "C_country":"India", 
     "C_sunrise":1381107633, 
     "C_sunset":1381149604 
    }, 
    "weatherDetail": 
    { 
     "w_id":711, 
     "w_main":"Smoke", 
     "w_description":"smoke", 
    } 
, 
"Tempdetail": 
    { 
     "t_temp":304.15, 
     "t_pressure":1009, 
    } 

} 
+0

см http://stackoverflow.com/questions/19945411/android-java-how-can-i-parse-a-local-json-file-from-assets-folder-into- a-listvi – sasikumar

+2

сообщение действительное json. –

ответ

10

Попробуйте это вы получите JSONObject этого файла. (Json должна быть действительной). Вы можете проверить JSon по clicking here

JSONObject obj = new JSONObject(readJSONFromAsset()); 

public String readJSONFromAsset() { 
    String json = null; 
    try { 
     InputStream is = getAssets().open("yourFile.json"); 
     int size = is.available(); 
     byte[] buffer = new byte[size]; 
     is.read(buffer); 
     is.close(); 
     json = new String(buffer, "UTF-8"); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
     return null; 
    } 
    return json; 
} 
+0

, используя это, я также сталкиваюсь с некоторой ошибкой –

+0

может быть, потому что ваш json недействителен. проверьте json с помощью jsonlint.com –

+0

JSONObject obj = new JSONObject (readJSONFromAsset()); // здесь i face error \t public String readJSONFromAsset() { \t String json = null; \t try { \t InputStream is = getAssets(). Open ("CountryDertail.json"); \t int size = is.available(); \t байт [] buffer = новый байт [размер]; \t is.read (buffer); \t is.close(); \t json = new String (буфер, «UTF-8»); \t} catch (IOException ex) { \t ex.printStackTrace(); \t return null; \t} \t return json; \t} –

1

Чтобы прочитать объект JSON из активов в чистом виде.

@RequiresApi(api = Build.VERSION_CODES.KITKAT) 
public JsonObject getJSONResource(Context context) { 
    try (InputStream is = context.getAssets().open("resource.json")) { 
     JsonParser parser = new JsonParser(); 
     return parser.parse(new InputStreamReader(is)).getAsJsonObject(); 
    } catch (Exception e) { 
     Log.e(TAG, e.getMessage(), e); 
    } 
    return null; 
} 

причина, почему существует апи inlcusion, это связано с тем, что обработка исключений использует попробовать с resources.Currently я использую простой JSON, рассмотрим GSON.

0

ваш JSON является недействительным ошибка:

Error: Parse error on line 7: 
...},  "weatherDetail": {   "w_id": 711, 
----------------------^ 
Expecting 'EOF', '}', ',', ']', got ':' 

, если вы хотите проверить ваш JSON перейти на этот сайт https://jsonlint.com/

0

Я сделаю это, чтобы сохранить уездный список из JSON в локальная база данных, это мой код:

public String loadJSONFromAsset() { 
    String json = null; 
    try { 

     InputStream is = getAssets().open("countries.json"); 

     int size = is.available(); 

     byte[] buffer = new byte[size]; 

     is.read(buffer); 

     is.close(); 

     json = new String(buffer, "UTF-8"); 


    } catch (IOException ex) { 
     ex.printStackTrace(); 
     return null; 
    } 
    return json; 

} 

    try { 
      JSONObject obj = new JSONObject(loadJSONFromAsset()); 
      JSONArray countries=obj.getJSONArray("countries"); 
      for (int i=0;i<countries.length();i++){ 
       JSONObject jsonObject=countries.getJSONObject(i); 
       String code=jsonObject.getString("code"); 
       String nameAr=jsonObject.getString("nameAr"); 
       String nameEn=jsonObject.getString("nameEn"); 
       countryList.add(new Country(code,nameAr,nameEn)); 
      } 
      DBHelper.getInstance(activity).insertCountries(countryList); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

и этот мой j Формат: сын

{"countries": [ 
{ 
    "nameEn": "Afghanistan", 
    "code": "AF", 
    "nameAr": "أفغانستان" 
}, 
{ 
    "nameEn": "Åland Islands", 
    "code": "AX", 
    "nameAr": "جزر أولان" 
}]} 
Смежные вопросы