2011-12-02 87 views
1

我正在尋找將字符串反序列化爲其先前形式ArrayList的小時。 毫無疑問,網絡中有很多例子,但我嘗試過的每一個都缺少至少一個對象或命令。所以,沒有人能以這種方式實施,他們公開了它。JSON/Java/Android:將字符串反序列化爲ArrayList <Strings>

服務器具有以下實現:

for (String string:DBdata) 
    { //put each string in DBdata to a JSON-Object with key=time and value=value 
     jSONString.put(string.substring(0, string.indexOf(",")), string.substring(string.indexOf(",")+1,string.indexOf(";"))); 
    } 

在DBdata每個串像123234:1234567; (UnixTimeOrIndex:Value;) 如果反序列化後的輸出是2維的,那也可以。

在此先感謝。

+1

考慮使用一些像GSON和Jackson這樣的第三方庫,它們可以讓開發人員的工作更輕鬆。 – yorkw

+0

來自Google的傑克遜或json-simple將是我的建議:http://code.google.com/p/json-simple/ – duffymo

回答

1

我自己寫的: 可能不是最有效的解決方案,但它的工作原理。主類中的所有東西都只是組裝一個字符串來測試。

package test; 
import java.util.ArrayList; 
import net.sf.json.JSONObject; 
public class Tst { 
public static void main(String[] args) { 
     ArrayList<String> versuch=new ArrayList<String>(); 
     for(int i=1; i<11; i++){  
     String temp = "Time1234"+i+",MeanValue123"+i+";"; 
     System.out.println(temp); 
     versuch.add(temp); 
     } 
     System.out.println(versuch); 

     JSONObject jSONString = new JSONObject(); 
     for (String string:versuch) 
     { //put each string in DBdata to a JSON-Object with key=time and value=value 
      jSONString.put(string.substring(0, string.indexOf(",")), string.substring(string.indexOf(",")+1,string.indexOf(";"))); 
     } 
     String output="data.ID=1234."+jSONString.toString(); 
     System.out.println(output); 
     System.out.println(JSONDeconstruct(output)); 
    } 

    public static ArrayList<String> JSONDeconstruct (String st) 
    { 

     ArrayList<String> out=new ArrayList<String>(); 

     int begpos=st.indexOf("{"); 
     int endpos=st.indexOf("}"); 
     int index=0; 

     String work=st.substring(begpos+1, endpos); 
     String replaced=work.replace("\",\"", ","); 
     work=replaced.replace("\":\"", ":"); 
     replaced=work.replace("\"","")+",definedend"; 
     System.out.println(replaced); 

     while (!replaced.equals("definedend")) 
     {   
      out.add(replaced.substring(0,replaced.indexOf(":"))+","+replaced.substring(replaced.indexOf(":")+1, replaced.indexOf(","))+";"); 

      String tempstring=replaced.substring(replaced.indexOf(",")+1); 
      replaced=tempstring; 
      index++; 
      System.out.println("loop disassembly step"+index+" "+replaced); 

     } 


     return out; 


    } 

} 
相關問題