दिलचस्प पोस्ट
PHP में URL फिर से लिखना कैसे करें? कैसे एक UIImageView पैमाने आनुपातिक पैमाने पर? Gradle का उपयोग करते समय मैं एक संक्रमणीय निर्भरता के सभी उदाहरणों को कैसे बाहर निकालूं? InputStream.available () जावा में क्या करता है? अपलोड छवि आकार को कम करने के लिए मैं UIImage का आकार कैसे बदलूं? Google मानचित्र एपीआई – पते के समन्वय प्राप्त करें आईफोन कुंजीपटल भाषा सेट करना मैं SQLite में कैसे जांच कर सकता हूं कि एक टेबल मौजूद है? संपादन टेक्स्ट फ़ील्ड से एंड्रॉइड मिले टेक्स्ट सी ++ से 0 और 1 के बीच एक यादृच्छिक डबल समान रूप से वितरित कैसे करते हैं? स्प्रिंग-बूट जर्सी: जर्सी को स्थिर सामग्री प्रदान करने की अनुमति दें कैसे बिल्कुल git submodule काम करता है? अवधि में सीएसएस निश्चित चौड़ाई एक ही कॉलम में एकाधिक दिनांक प्रारूप कैसे परिवर्तित करें क्यों println (सरणी) अजीब उत्पादन करता है? ("

एंड्रॉइड जावा; मैं एक स्थानीय JSON फ़ाइल को सूची फ़ोल्डर में संपत्ति फ़ोल्डर से कैसे पार्स कर सकता हूं

मैं वर्तमान में एक भौतिक विज्ञान ऐप विकसित कर रहा हूं जो फ़ार्मुलों की एक सूची दिखाने वाला है और यहां तक ​​कि उनमें से कुछ को हल करने के लिए (केवल समस्या ListView )

यह मेरा मुख्य लेआउट है

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" android:measureWithLargestChild="false" android:orientation="vertical" tools:context=".CatList" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/titlebar" > <TextView android:id="@+id/Title1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/app_name" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#ff1c00" android:textIsSelectable="false" /> </RelativeLayout> <ListView android:id="@+id/listFormulas" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView> </LinearLayout> 

और यह मेरी मुख्य गतिविधि है

 package com.wildsushii.quickphysics; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import org.json.JSONException; import org.json.JSONObject; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.content.res.AssetManager; import android.view.Menu; import android.widget.ListView; public class CatList extends Activity { public static String AssetJSONFile (String filename, Context context) throws IOException { AssetManager manager = context.getAssets(); InputStream file = manager.open(filename); byte[] formArray = new byte[file.available()]; file.read(formArray); file.close(); return new String(formArray); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cat_list); ListView categoriesL = (ListView)findViewById(R.id.listFormulas); ArrayList<HashMap<String, String>> formList = new ArrayList<HashMap<String, String>>(); Context context = null; try { String jsonLocation = AssetJSONFile("formules.json", context); JSONObject formArray = (new JSONObject()).getJSONObject("formules"); String formule = formArray.getString("formule"); String url = formArray.getString("url"); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } //My problem is here!! } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.cat_list, menu); return true; } } 

मैं वास्तव में जानता हूं कि मैं JSON का उपयोग किए बिना यह कर सकता हूं लेकिन मुझे JSON को अधिक अभ्यास करने की आवश्यकता है। वैसे, यह JSON है

  { "formules": [ { "formule": "Linear Motion", "url": "qp1" }, { "formule": "Constant Acceleration Motion", "url": "qp2" }, { "formule": "Projectile Motion", "url": "qp3" }, { "formule": "Force", "url": "qp4" }, { "formule": "Work, Power, Energy", "url": "qp5" }, { "formule": "Rotary Motion", "url": "qp6" }, { "formule": "Harmonic Motion", "url": "qp7" }, { "formule": "Gravity", "url": "qp8" }, { "formule": "Lateral and Longitudinal Waves", "url": "qp9" }, { "formule": "Sound Waves", "url": "qp10" }, { "formule": "Electrostatics", "url": "qp11" }, { "formule": "Direct Current", "url": "qp12" }, { "formule": "Magnetic Field", "url": "qp13" }, { "formule": "Alternating Current", "url": "qp14" }, { "formule": "Thermodynamics", "url": "qp15" }, { "formule": "Hydrogen Atom", "url": "qp16" }, { "formule": "Optics", "url": "qp17" }, { "formule": "Modern Physics", "url": "qp18" }, { "formule": "Hydrostatics", "url": "qp19" }, { "formule": "Astronomy", "url": "qp20" } ] } 

मैंने कई चीजों की कोशिश की है और पूरी परियोजना को एक नया बनाने के लिए भी हटा दिया है 🙁

Solutions Collecting From Web of "एंड्रॉइड जावा; मैं एक स्थानीय JSON फ़ाइल को सूची फ़ोल्डर में संपत्ति फ़ोल्डर से कैसे पार्स कर सकता हूं"

जैसा फ़जान उनके उत्तर में वर्णित है :

सबसे पहले जेसन फाइल को अपने assests से नीचे कोड का उपयोग कर फ़ाइल पढ़ें।

और फिर आप बस इस फ़ंक्शन द्वारा इस स्ट्रिंग रिटर्न को पढ़ सकते हैं

 public String loadJSONFromAsset() { String json = null; try { InputStream is = getActivity().getAssets().open("yourfilename.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 m_jArry = obj.getJSONArray("formules"); ArrayList<HashMap<String, String>> formList = new ArrayList<HashMap<String, String>>(); HashMap<String, String> m_li; for (int i = 0; i < m_jArry.length(); i++) { JSONObject jo_inside = m_jArry.getJSONObject(i); Log.d("Details-->", jo_inside.getString("formule")); String formula_value = jo_inside.getString("formule"); String url_value = jo_inside.getString("url"); //Add your values in your `ArrayList` as below: m_li = new HashMap<String, String>(); m_li.put("formule", formula_value); m_li.put("url", url_value); formList.add(m_li); } } catch (JSONException e) { e.printStackTrace(); } 

JSON के बारे में अधिक जानकारी के लिए यहां पढ़ें

 { // json object node "formules": [ // json array formules { // json object "formule": "Linear Motion", // string "url": "qp1" } 

तुम क्या कर रहे हो

  Context context = null; // context is null try { String jsonLocation = AssetJSONFile("formules.json", context); 

तो बदलने के लिए

  try { String jsonLocation = AssetJSONFile("formules.json", CatList.this); 

पार्स करने के लिए

मेरा मानना ​​है कि आप assests फ़ोल्डर से स्ट्रिंग प्राप्त करते हैं।

 try { String jsonLocation = AssetJSONFile("formules.json", context); JSONObject jsonobject = new JSONObject(jsonLocation); JSONArray jarray = (JSONArray) jsonobject.getJSONArray("formules"); for(int i=0;i<jarray.length();i++) { JSONObject jb =(JSONObject) jarray.get(i); String formula = jb.getString("formule"); String url = jb.getString("url"); } } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); }