我想創建一個字符串,它看起來像下面這樣:我如何有效地在Java中創建一個複雜的字符串?
"[{"product_id":"123","name":"stack"},{"product_id":"456","name":"overflow"}]"
我有兩個陣列中product_id
和name
。如何最有效地創建上述類型的字符串?
我想創建一個字符串,它看起來像下面這樣:我如何有效地在Java中創建一個複雜的字符串?
"[{"product_id":"123","name":"stack"},{"product_id":"456","name":"overflow"}]"
我有兩個陣列中product_id
和name
。如何最有效地創建上述類型的字符串?
如果事實證明你已經有了一個List<ProductInformation>
,則默認序列化與flexjson與排除會給你的字符串:
String jsonResult = new JSONSerializer().exclude("*.class").serialize(listOfProductInformation);
關於性能,最好的辦法是使用一個好的分析器來查看你的整體應用程序。這將識別您的真正熱點/瓶頸,如果事實證明這個序列化過程是一個熱點,您可以將時間調整爲@Ali提及,並通過分析器或性能測試工具運行,以測量影響。
您可能要對Java的字符串格式化一下: http://download.oracle.com/javase/6/docs/api/java/util/Formatter.html
樣品和一切的好回答。 –
+1 @Sean Patrick Floyd,關於使用庫和使用哪個庫的好建議 - 如果未來需要添加新字段,具有更復雜的層次關係等,將提供靈活性和代碼清晰度。 –
我假設你有2個數組一個包含和product_id,另一個包含值,這兩個都是正確的順序。
我會創建我自己的java對象(POJO),它有兩個字段product_id
和name
然後將兩個數組並創建一個POJO數組(或列表),每個POJO包含product_id和name。然後,我只會使用傑克遜或Gson來創建我的JSON。
這些庫爲您提供了Java對象的JSON表示,因此在這種情況下,您必須確保您有一個列表或甚至包含您的product_id
和name
的對象數組。
如果你堅持要做到這一點(或者沒有外部庫方式),那麼我會創建一個模板字符串並反覆調用replace並將其添加到StringBuffer中。如果字符串可能非常大,則StringBuffer非常重要。喜歡的東西:
String template = "{\"product_id\":\"productId\",\"name\":\"productName\"}";
StringBuffer result = new StringBuffer("[");
for(int i=0; i<myProductArray.length; i++){
String temp = template.replace("productId",myProductArray[i]);
temp = temp.replace("productName",myNameArray[i]);
if(result.length() > 1)
result.append(",");
result.append(temp);
}
result.append("]");
return result.toString();
如果可以更換template
String
與StringBuffer
和直接操縱的是,它會讓一噸的差異表現明智的大型字符串。
問候,
我看到您對[相關反序列化問題](http://stackoverflow.com/q/7099803/193874)的評論。你想從兩個數組或從一個'List'轉換嗎? –