2012-10-08 2 views
0

json을 구문 분석하지만 jsonarray에 다른 배열이 있고이 배열 값에 태그가 없습니다. (속성 이름.) 여기에 내 코드가 있습니다. 다른 값은 파싱 할 수 있지만 갤러리 배열의 값을 구문 분석 할 수 있나요? onitemclick 메소드에서 어떻게 값을 파싱 할 수 있습니까? 덕분에 ...json 배열의 배열을 구문 분석하는 방법

Myjson 링크 : HTTP : //kilimmobilya.com.tr/mobileservices/default.aspx I = yeniUrunler

내 JSON

{ 
    "veri": [ 
     { 
      "id": "1436", 
      "tarih": "08.10.2012", 
      "baslik": "Ares Plazma TV \u00dcnitesi", 
      "kImaj": "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Plazma-Unitesi/210x120/Ares-Plazma-VS1-00.jpg", 
      "kisaAciklama": "", 
      "icerik": "", 
      "fiyat": "799", 
      "Gallery": [ 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Plazma-Unitesi/630x360/Ares-Plazma-VS1-00.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Plazma-Unitesi/630x360/Ares-Plazma-VS1-01.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Plazma-Unitesi/630x360/Ares-Plazma-VS1-02.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Plazma-Unitesi/630x360/Ares-Plazma-VS2-00.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Plazma-Unitesi/630x360/Ares-Plazma-VS2-01.jpg" 
      ] 
     }, 
     { 
      "id": "1434", 
      "tarih": "08.10.2012", 
      "baslik": "Ares Yatak Odas\u0131", 
      "kImaj": "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/210x120/Ares-Yatak-Odasi-Takim-00.jpg", 
      "kisaAciklama": "", 
      "icerik": "", 
      "fiyat": "5690", 
      "Gallery": [ 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-00.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-00-1.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-01.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-02.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-03.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-04.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-05.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-06.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-07.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-08.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-09.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-10.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-11.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-12.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-13.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-14.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-15.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-16.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-17.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-18.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-19.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-20.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-21.jpg", 
       "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Yatak-Odasi/630x360/Ares-Yatak-Odasi-Takim-22.jpg" 
      ] 
     } 
package com.eticaret.hakan; 
import java.lang.reflect.Array; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Comparator; 
import java.util.List; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import com.eticaret.hakan.R; 

import android.R.string; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.ProgressDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.graphics.drawable.ColorDrawable; 
import android.graphics.drawable.Drawable; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class Yeniurunler extends Activity implements OnItemClickListener,OnClickListener { 
    int gelencatid; 
    Button altkampanya,altkatalog,altbayi,altiletisim; 
    private static final String rssFeed = "http://kilimmobilya.com.tr/mobileservices/default.aspx?i=yeniUrunler"; 
    private static final String link="http://salih.arti-sanat.com/e-ticaret/s3.jpg"; 

    private static final String TAG_PRODUCTS = "veri"; 
    private static final String TAG_PID = "id"; 
    private static final String TAG_PNAME = "baslik"; 
    private static final String TAG_PPRICE = "tarih"; 
    private static final String TAG_PDESCRIPTION = "kisaAciklama"; 
    private static final String TAG_CREATEDAT = "tarih"; 

    private static final String TAG_LINK = "kImaj"; 
    private static final String TAG_GALLERY="Gallery"; 

    List<Item> arrayOfList; 
    ListView listView; 
    KampanyaRowAdapter objAdapter; 
    JSONArray jsonArray; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.yeniurunler); 
     altkampanya=(Button) findViewById(R.id.altkampanyalar); 
     altkatalog=(Button) findViewById(R.id.altkataloglar); 
     altbayi=(Button) findViewById(R.id.altbayilerimiz); 
     altiletisim=(Button) findViewById(R.id.altiletisim); 
     altkampanya.setOnClickListener(this); 
     altkatalog.setOnClickListener(this); 
     altbayi.setOnClickListener(this); 
     altiletisim.setOnClickListener(this); 
     listView = (ListView) findViewById(R.id.listview); 
     listView.setDivider(new ColorDrawable(0x90000000)); 
     listView.setDividerHeight(1); 
     listView.setOnItemClickListener(this); 

     arrayOfList = new ArrayList<Item>(); 

     if (Utils.isNetworkAvailable(Yeniurunler.this)) { 
      new MyTask().execute(rssFeed); 
     } else { 
      showToast("Ağ bağlantısı yok!!!"); 
     } 

    } 

    // My AsyncTask start... 

    class MyTask extends AsyncTask<String, Void, String> { 

     ProgressDialog pDialog; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      pDialog = new ProgressDialog(Yeniurunler.this); 
      pDialog.setMessage("Yükleniyor..."); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
     } 

     @Override 
     protected String doInBackground(String... params) { 
      return Utils.getJSONString(params[0]); 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 

      if (null != pDialog && pDialog.isShowing()) { 
       pDialog.dismiss(); 
      } 

      if (null == result || result.length() == 0) { 
       showToast("Ürün Bulunamadı"); 
       Yeniurunler.this.finish(); 
      } else { 

       try { 
        JSONObject mainJson = new JSONObject(result); 
        jsonArray = mainJson.getJSONArray(TAG_PRODUCTS); 
        for (int i = 0; i < jsonArray.length(); i++) { 
         JSONObject objJson = jsonArray.getJSONObject(i); 

         Item objItem = new Item(); 


         objItem.setName(objJson.getString(TAG_PNAME)); 
         objItem.setCity(objJson.getString(TAG_PDESCRIPTION)); 
         objItem.setLink(objJson.getString(TAG_LINK)); 

         //objItem.setLink(link); 



         arrayOfList.add(objItem); 


        } 

       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
       // check data... 

       /* 
       * for (int i = 0; i < arrayOfList.size(); i++) { Item item = 
       * arrayOfList.get(i); System.out.println(item.getId()); 
       * 
       * System.out.println(item.getId()); 
       * System.out.println(item.getName()); 
       * System.out.println(item.getCity()); 
       * System.out.println(item.getGender()); 
       * System.out.println(item.getAge()); 
       * System.out.println(item.getBirthdate()); } 
       */ 

       Collections.sort(arrayOfList, new Comparator<Item>() { 

        public int compare(Item lhs, Item rhs) { 
         return (lhs.getAge() - rhs.getAge()); 
        } 
       }); 
       setAdapterToListview(); 

      } 

     } 
    } 

    public void onItemClick(AdapterView<?> parent, View view, int position, 
      long id) { 


       Intent a = new Intent(getApplicationContext(), YeniUrunDetay.class); 
       // starting new activity and expecting some response back 

       startActivity(a); 





     // sending pid to next activity 


     } 


    public void setAdapterToListview() { 
     objAdapter = new KampanyaRowAdapter(Yeniurunler.this, R.layout.kampanyarow, 
       arrayOfList); 
     listView.setAdapter(objAdapter); 
    } 

    public void showToast(String msg) { 
     Toast.makeText(Yeniurunler.this, msg, Toast.LENGTH_LONG).show(); 
    } 


    public void onClick(View v) { 
     // TODO Auto-generated method stub 
switch (v.getId()) { 

     case R.id.altkampanyalar: 
      Intent goAltkampanya= new Intent(this, Kampanyalar.class); 
      startActivity(goAltkampanya); 

      break; 
     case R.id.altkataloglar: 
      Intent goAltkatalog = new Intent(this, Kataloglar.class); 
      startActivity(goAltkatalog); 

      break; 
     case R.id.altbayilerimiz: 
      Intent goBAyi= new Intent(this, Bayiler.class); 
      startActivity(goBAyi); 

      break; 
     case R.id.altiletisim: 
      Intent goAltiletisim= new Intent(this, Iletisim.class); 
      startActivity(goAltiletisim); 

      break; 
     } 

    } 

} 
+2

JSON을 볼 수 있다면 정말 유용 할 것입니다. –

+0

json url을 질문에서 제외합니다. 감사합니다. – slhgndz

+0

JSON을 게시하십시오. –

답변

0

당신은 객체를 정의하여 GSON를 사용할 수 있습니까? 따라서. Array에 대해서는 이지만 필드 이름은 자연스럽게 없으므로 List로 파싱 할 수 있습니다. 여기

응답 어레이는이 URL http://kilimmobilya.com.tr/mobileservices/default.aspx?i=yeniUrunler

된 JSONObject에 대한 응답을 사용하는 예를 제공;

{ 
id: "1436", 
tarih: "08.10.2012", 
baslik: "Ares Plazma TV Ünitesi", 
kImaj: "http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Plazma-Unitesi/210x120/Ares-Plazma-VS1-00.jpg", 
kisaAciklama: "", 
icerik: "", 
fiyat: "799", 
Gallery: [ 
"http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Plazma-Unitesi/630x360/Ares-Plazma-VS1-00.jpg", 
"http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Plazma-Unitesi/630x360/Ares-Plazma-VS1-01.jpg", 
"http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Plazma-Unitesi/630x360/Ares-Plazma-VS1-02.jpg", 
"http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Plazma-Unitesi/630x360/Ares-Plazma-VS2-00.jpg", 
"http://www.kilimmobilya.com.tr/urunler/PANEL-GRUP/Ares-Plazma-Unitesi/630x360/Ares-Plazma-VS2-01.jpg" 
] 
},  

다음과 같이 Java 개체를 만듭니다.

public class Urun implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Expose public String id; 
    @Expose public String tarih; 
    @Expose public String baslik; 
    @Expose public String kImaj; 
    @Expose public String kisaAciklama; 
    @Expose public String icerik; 
    @Expose public String fiyat; 
    @Expose public List<String> Gallery;// notice this is a List of String 

} 

그러면 JsonObject를 정의 된 클래스로 쉽게 파싱 할 수 있습니다. 이 다음은 POJO

public class Veri { 
    private long id; 
    private String date; 
    private String baslik; 
    private String kImagj; 
    private String kisaAciklama; 
    private String icerik; 
    private String fiyat; 
    private List<String> gallery; 

    // Constructors, getters and setters… 
} 

입니다

+0

감사합니다. verymuch – slhgndz

+0

좋은 소리! 대답이 도움이된다면, 동의를 클릭하십시오. kyay gelsin;) – guleryuz

+0

[:)] teşekkürler – slhgndz

0

예를 GSON

Urun urun = (new Gson()).fromJson(jsonObj, Urun.class); 

희망이 도움을 사용하여이 ...

private List<Veri> parseJson(String json) { 
    List<Veri> veriList = new ArrayList<Veri>(); 

    List<String> galleryImages = new ArrayList<String>(); 
    try { 
     JSONObject jsonObject = new JSONObject(json); 
     JSONArray veriArray = jsonObject.getJSONArray("veri"); 
     int nVeri = veriArray.length(); 
     for (int i = 0; i < nVeri; i++) { 
      JSONObject veriObject = veriArray.getJSONObject(i); 
      long id = Long.valueOf(veriObject.getString("id")); 
      String date = veriObject.getString("tarih"); 
      String baslik = veriObject.getString("baslik"); 
      String kImaj = veriObject.getString("kImaj"); 
      String kisaAciklama = veriObject.getString("kisaAciklama"); 
      String icerik = veriObject.getString("icerik"); 
      String fiyat = veriObject.getString("fiyat"); 
      JSONArray galleryImageArray = veriObject.getJSONArray("Gallery"); 

      int nImages = galleryImageArray.length(); 
      for(int j = 0; j < nImages; i++) { 
       galleryImages.add(galleryImageArray.getString(j)); 
      } 

      Veri veri = new Veri(); 
      veri.setId(id); 
      veri.setDate(date); 
      veri.setBaslik(baslik); 
      veri.setKImagj(kImaj); 
      veri.setKisaAciklama(kisaAciklama); 
      veri.setFiyat(fiyat); 
      veri.setGallery(galleryImages); 

      veriList.add(veri); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return veriList; 
} 

이 도울 수 구문 분석하는 코드입니다!

+0

대단히 감사합니다. – slhgndz

+0

누군가가 당신에게 대답을 줄 때마다 동의하십시오. 그렇게하면 더 많은 사람들이 당신을 도울 것입니다;) –

+0

parseJson ("Gallery")처럼이 함수를 호출합니까? – slhgndz

관련 문제