我想创建一个如下所示的字符串:
"[{"product_id":"123","name":"stack"},{"product_id":"456","name":"overflow"}]"
我在两个数组中有product_id
和name
。如何最有效地创建上述类型的字符串?
答案 0 :(得分:13)
答案 1 :(得分:0)
您可能希望查看Java String Formatter: http://download.oracle.com/javase/6/docs/api/java/util/Formatter.html
答案 2 :(得分:0)
我假设你有两个数组,一个包含和product_id,另一个包含值,这两个数据的顺序正确。
我会创建自己的java对象(POJO),其中包含两个字段product_id
和name
然后获取两个数组并创建一个POJO数组(或列表),每个POJO包含product_id和name 。然后我会用Jackson或Gson创建我的JSON。
这些库为您提供了Java对象的JSON表示,因此在这种情况下,您必须确保您有一个列表,甚至包含product_id
和name
的对象数组
如果你坚持以硬盘方式(或没有外部库方式),那么我将创建一个模板String并重复调用它上面的替换并将其添加到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
并直接操作,那么对于大型字符串来说,它会对性能产生很大影响。
此致
答案 3 :(得分:0)
如果事实证明你已经有List<ProductInformation>
,那么使用带有排除的flexjson的默认序列化将为你提供字符串:
String jsonResult = new JSONSerializer().exclude("*.class").serialize(listOfProductInformation);
关于性能,最好的办法是使用一个好的分析器来查看整个应用程序。这将确定您的真正热点/瓶颈,如果事实证明此序列化过程是一个热点,您可以花时间调整@Ali提及并通过分析器或性能测试工具将其运行以测量影响。