在 Web 服务 java 中返回 json 结果

Posted

技术标签:

【中文标题】在 Web 服务 java 中返回 json 结果【英文标题】:Returning json result in web services java 【发布时间】:2015-07-28 04:47:10 【问题描述】:

我正在为 java 中的 Apache Spark Sql 创建 Web 服务,并将结果集作为 json 返回。对于最少的行,它运行得很快,但对于最大的行,它需要太多时间来加载。你能告诉我如何以有效的方式返回这些结果吗?这是我的java代码

  String output = "[";
  SparkConf sparkConf = new SparkConf().setAppName("Hive").setMaster("local").set("spark.driver.allowMultipleContexts", "true");
  JavaSparkContext ctx = new JavaSparkContext(sparkConf);
  HiveContext sqlContext = new org.apache.spark.sql.hive.HiveContext(ctx.sc());
 Row[] result = sqlContext.sql("Select * from activity where column="'value'" ).collect();
 for (int i = 0; i < result.length; i++) 
            output += "\"" + "Column1" + "\":\"" + result[i].getString(0) + "\",\"" + "Column2" + "\":" + result[i].getString(1) + ",\"" + "Column3" + "\":" + result[i].getString(2) + ",\"" + "Column4" + "\":" + result[i].getString(3) + ",\"" + "Column5" + "\":" + result[i].getInt(4) + ",\"" + "Column6" + "\":" + result[i].getString(5) + ",\"" + "Column7" + "\":" + result[i].getString(6) + ",";
    

我正在使用 for 循环来获取结果集的内容。我可能有 100 万行,所以使用 for 循环会花费我更多时间。有没有有效的方法来实现这一点

【问题讨论】:

Row[] 映射到自定义 POJO 并使用现有库(如 Jackson/Gson)从中创建 json 字符串而不是手动创建可能是个好主意。请查看:mkyong.com/java/how-to-convert-java-object-to-from-json-jackson 和此 SO 帖子 ***.com/questions/15786129/… 以供参考。 并避免使用字符串连接,请改用StringBuffer / StringBuilder 【参考方案1】:

@wazza,请找到以下要点,您可以使 for 循环快速性能。实际上 for 循环或 while 循环等没有太大区别...

1. Use integer as loop index variable.
2. Use System.arraycopy() to copy arrays.
3. Avoid method calls in loops .
4. It is efficient to access variables in a loop when compared to accessing array elements.
5. Compare the termination condition in a loop with zero if you use non-JIT or HotSpot VMs.
6. Avoid using method calls to check for termination condition in a loop
7. When using short circuit operators place the expression which is likely to evaluate to false on extreme left if the expresion contains &&.
8. When using short circuit operators place the expression which is likely to evaluate to true on extreme left if the expresion contains only ||.
9. Do not use exception handling inside loops.

希望这对您的请求有所帮助...

【讨论】:

以上是关于在 Web 服务 java 中返回 json 结果的主要内容,如果未能解决你的问题,请参考以下文章

asp.net web表单json返回结果

在 C# RESTful Web 服务中删除 xml 命名空间返回字符串

web环境下,servlet如何设计java接口接收json,并将处理结果按json格式返回?

如何在 web 服务响应中将 json 响应作为块返回?

从 Web 服务解析 JSON 数据时,没有返回数据

如何设计一个包含 Web 服务结果的类