2016-03-22 27 views
0

BandClient Object'i JSON'a dönüştürmek için sorunum var (SHARED PREFS (ANDROID) öğesinde daha sonra kullanmak üzere nesneyi kaydetmek istiyorum). Nesne GSON'a (JSON) doğru şekilde nasıl dönüştürülür?

GSON kullanarak bunu yapmak için çalıştı, ama yürütme

String json = gson.toJson(bandClient); 

sırasında hep şu istisna olsun:

Süreci: xxr.com.mitracker PID: 19040 java.lang.StackOverflowError Com.google.gson.internal adresindeki . $ Gson $ Types.resolve ($ Gson $ Türler.java: 380) com.google.gson.internal adresindeki . $ Gson $ Types.resolve ($ Gson $ Türler.java: 375) com.google.gso adresinden com.google.gson.internal.tr $ Gson $ Types.resolve ($ Gson $ Türleri.java: 380) adresinden. $ Gson $ Types.resolve ($ Gson $ Türleri.java: 375) com adresinde. google.gson.internal. $ Gson $ Types.resolve ($ Gson $ Türler.java: 380)

Nasıl doğru bir şekilde çözebilirim? herhangi bir tavsiye

Yöntem kodu için

Çok teşekkürler:

private AdapterView.OnItemClickListener onListItemClickListener = new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
           long id) { 
      BandInfo[] pairedBands = 
        BandClientManager.getInstance().getPairedBands(); 

      Logger.d("Clicked on item " + position); 
      final BandClient bandClient = 
        BandClientManager.getInstance().create(context, pairedBands[position]); 
      //mBandList.get(position).getBandClient(); 

      MsBandHelperAssync asyncTask = new MsBandHelperAssync(new AsyncResponse() { 
       @Override 
       public void processFinish(Boolean output) { 
        try { 
         Logger.d("RETURNED " + output); 
         Gson gson = new Gson(); 
         Logger.d("PLAIN OBJECT" + bandClient); 
         gson.toJsonTree(bandClient); 
         Logger.d("PASSED"); 
         String json = gson.toJson(bandClient); 
         Logger.d("PASSED JSON" + json); 
         //Prefs.putString(Constants.Global.SHARED_PREFS_KEY_PAIRED_DEVICES, json); 
         Logger.d("Saved"); 
         //CommonHelper.redirectToActivity(context, mActivity, DashboardActivity.class); 
        } catch (Exception e) { 
         Logger.e(e.getMessage()); 
        } 

       } 
      }); 
      asyncTask.execute(bandClient); 
+0

Bir StackOverflowError alıyorsunuz, çünkü sonsuz bir özyinelemede kalıyorsunuz. – chRyNaN

+0

Lütfen bana nerede olduğunu söyleyebilir misiniz? – redrom

cevap

1

A BandClient Micrsoft Sağlık düzenlediği BandService bağlantı temsil eder. Böylece, onu oluşturmak için kullanılan etkinlik, hizmet veya uygulama içeriğine bir başvuru içerir. Ve daha sonra kullanmak için kaydederseniz işe yaramaz.

Bunun yerine, kaydetmek istediğiniz BandClient ile ilişkili BandInfo nesnesinin mac adresini kaydetmek ve kullanmak istediğinizde BandClient'i yeniden oluşturmak isteyeceksiniz.

+0

Teşekkür ederim, ben mac adresinin bandInfo nesnesinden alınabileceğini bilmiyordum. – redrom

İlgili konular