GVKun编程网logo

Java中如何返回Json数组(java如何返回json数据)

10

本文将带您了解关于Java中如何返回Json数组的新内容,同时我们还将为您解释java如何返回json数据的相关知识,另外,我们还将为您提供关于AJAXMVC服务器返回Json数据,客户端获取Json

本文将带您了解关于Java中如何返回Json数组的新内容,同时我们还将为您解释java如何返回json数据的相关知识,另外,我们还将为您提供关于AJAX MVC 服务器返回Json数据,客户端获取Json数据、ajax如何经过后台返回json数组以及在在js中得到json对象、ajax调用返回php接口返回json数据 ajax jsonp ajax json实例 ajax获取后台json数、Ajax返回Json在Java中的实现的实用信息。

本文目录一览:

Java中如何返回Json数组(java如何返回json数据)

Java中如何返回Json数组(java如何返回json数据)

 

期望返回如下格式的数据

{
  "ResultId": "1", 
  "ResultDetail": "Data", 
  "Data": [
    {
      "ListSeqNo": 2344, 
      "HeadSeqNo": 2342, 
      "SourcePath": "D:\ABC", 
      "Source": "Schemas.rar", 
      "DestPath": "D:\TransportSea", 
      "SourceType": "txt", 
      "IsRun": 1, 
      "RunParams": "", 
      "IsDown": "0", 
      "FileContents": ""
    }, 
    {
      "ListSeqNo": 8, 
      "HeadSeqNo": 2, 
      "SourcePath": "ABC", 
      "Source": "Schemas.rar", 
      "DestPath": "D:\TransportSea", 
      "SourceType": "dir", 
      "IsRun": 1, 
      "RunParams": "", 
      "IsDown": "0", 
      "FileContents": ""
    }
  ]
}

 

Java代码如下 - 这个方法很好用

JSONObject jsonobject = new JSONObject();
List<Map<String, Object>> statusFlowList = null;
String  data = null;
//查询数据
statusFlowList = MSGService.getStatusFlow(statusFlow);
//处理数据 - 转为json字符串
if(null != statusFlowList && statusFlowList.size()>0) {
    data = JSON.toJSONString(statusFlowList, SerializerFeature.WriteMapNullValue);
    //data = data.replace("null", "\"\"");
}    
//处理数据 - 封装返回数据
jsonobject.put("result", "1");
jsonobject.put("info", "");
jsonobject.put("data", null==data? "" : data);
return jsonobject.toString();

 

Java代码如下 - 这个方法好笨啊

//import net.sf.json.JSONArray;
//import net.sf.json.JSONObject;

List<AmAppManagerConfig> aamConfigList = clsDataService.queryCLS008Two(msgForm);
if(null != aamConfigList && aamConfigList.size()>0) {
    //存在数据,封装数据进行返回
    JSONObject jsonObject08 = new JSONObject();
    info = "Data";
    result = "1";            
    jsonObject08.put("ResultId", result);
    jsonObject08.put("ResultDetail", info);
    JSONArray jsonArray = new JSONArray();
    for(AmAppManagerConfig am :aamConfigList) {
        JSONObject jsonObjectData = new JSONObject();
        jsonObjectData.put("ListSeqNo",am.getListSeqNo() != null ? am.getListSeqNo():""); //顺序号
        jsonObjectData.put("HeadSeqNo",am.getHeadSeqNo() != null ? am.getHeadSeqNo():"");  //头序号
        jsonObjectData.put("SourcePath",am.getSourcePath() != null ? am.getSourcePath():""); //目录地址
        jsonObjectData.put("Source",am.getSource() != null ? am.getSource():"");  //文件或目录名
        jsonObjectData.put("DestPath",am.getDestPath() != null ? am.getDestPath():"");  //应用所在目录
        jsonObjectData.put("SourceType",am.getSourceType() != null ? am.getSourceType():"");  //目录类型
        jsonObjectData.put("IsRun",am.getIsRun() != null ? am.getIsRun():"");      //可运行
        jsonObjectData.put("RunParams",am.getRunParams() != null ? am.getRunParams():""); //运行参数
        jsonObjectData.put("IsDown",am.getIsDown() != null ? am.getIsDown():"");   //是否下载
        jsonObjectData.put("FileContents",am.getFileContents() != null ? new String(am.getFileContents().getBytes((long)1, (int)am.getFileContents().length())):""); //INI配置  
        jsonArray.add(jsonObjectData);
        jsonObject08.element("Data", jsonArray);
        jsonObject08.getJSONArray("Data");
    }
    String decodeDataStr = new String(Base64.encodeBase64(jsonObject08.toString().getBytes()));
    System.out.println("decodeDataStr---->" + decodeDataStr);
    return decodeDataStr;
}else {
    //未查询到数据
    JSONObject jsonObject08 = new JSONObject();
    info = "客户端ID未授权";
    result = "0";            
    jsonObject08.put("ResultId", result);
    jsonObject08.put("ResultDetail", info);
    String decodeDataStr = new String(Base64.encodeBase64(jsonObject08.toString().getBytes()));
    return decodeDataStr;
}

 

AJAX MVC 服务器返回Json数据,客户端获取Json数据

AJAX MVC 服务器返回Json数据,客户端获取Json数据

<>

控制器 Controller

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Script.Serialization; namespace MvcApplication2.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); } //---------------------------------第一种写法:服务器返回一个Json对象 public ActionResult GetData1() { JsonResult json = new JsonResult(); json.JsonRequestBehavior = JsonRequestBehavior.AllowGet; //允许来自客户端的HTML GET请求 json.Data = new { code = 0,message = "成功" }; return json; //这里直接返回一个json对象给客户端,客户端通过ajax的请求后,获得的直接就是一个json对象,不需要再用$.parseJSON(data)这个方式将字符串转换成Json对象了,因为取到的本身就是一个json对象,而不是一个字符串。 } //---------------------------------第二种写法:服务器返回一个Json对象 public ActionResult GetData2() { //其实调用的是JsonResult类下的这个方法:protected internal JsonResult Json(object data); //注意:Json()是一个方法,参数是一个object类型的对象,返回值是JsonResult类型 return Json(new { code = 0,message = "ON" }); //通过测试:采用这种形式,客户端只能通过异步的Post请求才能取到数据,如果异步Get请求,无法获取数据 } //---------------------------------第三种写法:服务器返回一个Json格式的字符串 public ActionResult GetData3() { JavaScriptSerializer json = new JavaScriptSerializer(); var jsonObj = new { code = 1,message = "OK" }; //构造一个对象 string jsonStr = json.Serialize(jsonObj); //将这个对象转换成json格式的字符串 return Content(jsonStr); //返回一个json格式的字符串。 所以客户端通过ajax请求后,获得的这个数据仅仅是一个json格式的字符串,所以需要用$.parseJSON(data)这个方式将字符串转换成Json对象 } } }

视图 View

<html> <head> <Meta name="viewport" content="width=device-width" /> <title>Index</title> <script src="~/jquery-1.11.2.js"></script> </head> <body> <div> <button id="submit1">提交1</button> <button id="submit2">提交2</button><button id="submit3">提交3</button> </div> </body> </html> <script type="text/javascript"> $(function () { $("#submit1").click(function () { $.get("/Home/GetData1",function (data) { //服务器端返回的是一个Json对象,所以这个data是一个json对象,并不是一个json格式的字符串。 alert(data.code); //打印出:0 alert(data.message);//打印出:成功 //除了以上的取值方式外下面的方式也是可以取到值的 alert(data["code"]); //打印出:0 alert(data["message"]); //打印出:成功 }) }) }) </script> <script type="text/javascript"> $(function () { $("#submit2").click(function () { //不知道为什么这种一定要是异步Post请求,如果是异步Get请求无法取到数据 $.post("/Home/GetData2",function (data) { //服务器端返回的是一个Json对象,所以这个data是一个json对象,并不是一个json格式的字符串。 alert(data.code); //打印出:0 alert(data.message); //打印出:ON }) }) }) </script> <script type="text/javascript"> $(function () { $("#submit3").click(function () { $.get("/Home/GetData3",function (data) { //服务器返回的是一个json格式的字符串,所以这个data是一个字符串,并不是一个对象 var jsonObj = $.parseJSON(data); //将这个字符串 转换成json对象 alert(jsonObj.code); //打印出:1 alert(jsonObj.message); //打印出:OK }) }) }) </script>

ajax如何经过后台返回json数组以及在在js中得到json对象

ajax如何经过后台返回json数组以及在在js中得到json对象


首先是 前台ajax代码


$.ajax( {
type : "POST",
url : "url",
data: "",
success : function(msg) {

//此处msg并不是json对象,需要转换
json = JSON.parse(msg);

}



然后是后台:

这边如果是个list或数组

可以用

JSONArray jsonmap = JSONArray .fromObject(list);

如果是map<String,Object>如map<String,List>

就用

JSONObject jsonmap = JSONObject.fromObject(tMap); //System.out.println(jsonmap); //List<String> strList = new ArrayList<String>(); pWriter.print(jsonmap); pWriter.flush(); pWriter.close();

ajax调用返回php接口返回json数据 ajax jsonp ajax json实例 ajax获取后台json数

ajax调用返回php接口返回json数据 ajax jsonp ajax json实例 ajax获取后台json数

php代码如下:

<span><?php </span>header(<span>''Content-Type: application/json''</span>);
    header(<span>''Content-Type: text/html;charset=utf-8''</span>);

    <span>$email </span><span>= </span><span>$_GET[</span><span>''email''</span><span>]</span>;

    <span>$user </span><span>= </span><span>[]</span>;

    <span>$conn </span><span>= @</span>mysql_connect(<span>"localhost"</span>,<span>"Test"</span>,<span>"123456"</span>) <span>or die</span>(<span>"Failed in connecting database"</span>);
    mysql_select_db(<span>"Test"</span>,<span>$conn</span>);
    mysql_query(<span>"set names ''UTF-8''"</span>);
    <span>$query </span><span>= </span><span>"select </span><span><em>*</em></span><span> from UserInformation where email = ''"</span><span>.</span><span>$email</span><span>.</span><span>"''"</span>;
    <span>$result </span><span>= </span>mysql_query(<span>$query</span>);
    <span>if </span>(<span>null </span><span>== </span>(<span>$row </span><span>= </span>mysql_fetch_array(<span>$result</span>))) <span>{
</span><span>echo </span><span>$_GET[</span><span>''callback''</span><span>]</span><span>.</span><span>"(no such user)"</span>;
    <span>} </span><span>else </span><span>{
</span><span>$user[</span><span>''email''</span><span>] </span><span>= </span><span>$email</span>;
        <span>$user[</span><span>''nickname''</span><span>] </span><span>= </span><span>$row[</span><span>''nickname''</span><span>]</span>;
        <span>$user[</span><span>''portrait''</span><span>] </span><span>= </span><span>$row[</span><span>''portrait''</span><span>]</span>;
        <span>echo </span><span>$_GET[</span><span>''callback''</span><span>]</span><span>.</span><span>"("</span><span>.</span>json_encode(<span>$user</span>)<span>.</span><span>")"</span>;
    <span>}
</span><span>?&gt;</span></span>
登录后复制
js代码如下:

<script>
        $.ajax({
            url: "http://test.localhost/UserInterfaceForChatroom/UserInformation.php?email=pshuyue@gmail.com",
            type: "GET",
            dataType: &#39;jsonp&#39;,
            //            crossDomain: true,
            success: function (result) {
                //                data = $.parseJSON(result);
                //                alert(data.nickname);
                alert(result.nickname);
            }
        });
    </script>
登录后复制

其中遇到了两个问题:

1.第一个问题:

Uncaught SyntaxError: Unexpected token :

解决方案如下:

This has just happened to me, and the reason was none of the reasons above. I was using the jQuery command getJSON and adding callback=? to use JSONP (as I needed to go cross-domain), and returning the JSON code {"foo":"bar"} and getting the error.

This is because I should have included the callback data, something like jQuery17209314005577471107_1335958194322({"foo":"bar"})

Here is the PHP code I used to achieve this, which degrades if JSON (without a callback) is used:

立即学习“PHP免费学习笔记(深入)”;

<span>$ret</span><span>[</span><span>''foo''</span><span>]</span><span>=</span><span>"bar"</span><span>;</span><span>
finish</span><span>();</span><span>function</span><span> finish</span><span>()</span><span>{</span><span>
    header</span><span>(</span><span>"content-type:application/json"</span><span>);</span><span>if</span><span>(</span><span>$_GET</span><span>[</span><span>''callback''</span><span>])</span><span>{</span><span>print</span><span> $_GET</span><span>[</span><span>''callback''</span><span>].</span><span>"("</span><span>;</span><span>}</span><span>print</span><span> json_encode</span><span>(</span><span>$GLOBALS</span><span>[</span><span>''ret''</span><span>]);</span><span>if</span><span>(</span><span>$_GET</span><span>[</span><span>''callback''</span><span>])</span><span>{</span><span>print</span><span>")"</span><span>;</span><span>}</span><span>exit</span><span>;</span><span>}</span>
登录后复制

Hopefully that will help someone in the future.

2.第二个问题:

解析json数据。从上面的javascript中可以看到,我没有使用jquery.parseJSON()这些方法,开始使用这些方法,但是总是会报

VM219:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1

的错误,后来不用jquery.parseJSON()这个方法,反而一切正常。不知为何。

以上就介绍了ajax调用返回php接口返回json数据,包括了ajax,json方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Ajax返回Json在Java中的实现

Ajax返回Json在Java中的实现


  在上一个随笔中,介绍AJAX的一个简单实例,在这篇中主要是说一下使用Json来将后台取得的数据显示到前台页面。可以说这种方法应该是实现无刷新分页的基础,而且在开发过程中经常被用到。这里的后台部分由JAVA来实现。

  这个例子也在上一篇中那个项目中实现。新建一个SecondTest.html页面,定义一个按钮,并给这个按钮绑定事件ajaxJson()。在JS中实现AJAX,这里的AJAX相对于上一篇中的,我做了简单的封装,将原有的代码分成三个方法,分别是create()、callback()、run()。

  create方法是用来创建XMLHttp对象的,callback是用来实现回调函数的,run方法是核心方法。具体代码如下:

  create():

function create(){
                if(window.XMLHttpRequest){
                    xmlHttp=new XMLHttpRequest();
                }else if(window.ActiveXObject){
                    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")
                }
            }

  callback():

function callback(){ if(xmlHttp.readyState==4){ if(xmlHttp.status==200){ //要实现的操作 }else{ alert("AJAX服务器返回错误!"); } } }
  run():

function run(url){
                create();
                xmlHttp.open("POST",url,true);
                xmlHttp.onreadystatechange=callback;
                xmlHttp.send();
            }

  以上三个方法写好后,在ajaxJson()方法中直接调用run方法并将请求当参数传入进去。代码如下:

function ajaxJson(){
                run("test.do?method=jsonTest&&msg="+new Date());
            }

  在AjaxController类的中新建jsonTest方法,在JAVA中实现Json是需要Json架包的,Json的架包有:json-lib-2.3-jdk15.jar,ezmorph-1[1].0.6.jar,commons-logging-tests.jar,commons-logging-api-1.1.1.jar,commons-logging-adapters-1.1.1.jar,commons-logging-1.1.1-sources.jar,commons-logging-1.1.1-javadoc.jar,commons-logging-1.1.1.jar,commons-lang.jar,commons-collections-3[1].2.1.jar,commons-beanutils-core.jar,commons-beanutils-bean-collections.jar,commons-beanutils.jar。看着有点多哈,可以自己去CSDN上面找,我试着删掉一些,但发现少了会不好使,所以为了保险还是把这些都加进去吧。

  在开发过程中一般数据都是从数据库中取出来的,习惯性的我们会在程序中将取出的数据存到List中,而Json架包中正好有封装好的方法能将List转换为Json。在这个例子中我们自己制造一些假数据放到List中,然后再将List转换为Json,再返回给前台。代码如下:

public ActionForward jsonTest(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception { 制造假数据 ArrayList<usermodel> list=new ArrayList<usermodel>(); usermodel user1=new usermodel();用户对象1 user1.setUserId(1); user1.setUserName("哈哈"); user1.setUserSex("男"); list.add(user1); usermodel user2=用户对象2 user2.setUserId(2); user2.setUserName("呵呵"); user2.setUserSex("女"); list.add(user2); 将List转化为JSON JSONArray json=JSONArray.fromObject(list); 设置编码 response.setCharacterEncoding("gbk"); 写入到前台 response.getWriter().write(json.toString()); return null; }
  后台部分写完了,现在前台SecondTest.html页面需要接收后台反馈来的数据,这个时候就需要在回调函数中接收Json数据。JS代码如下:

回调函数 function callback(){ if(xmlHttp.readyState==4){ if(xmlHttp.status==200){ var xmlDoc=xmlHttp.responseText; var data=eval(xmlDoc); alert(data[0].userId+","+data[0].userName+","+data[0].userSex); alert(data[1].userId+","+data[1].userName+","+data[1].userSex); }else{ alert("AJAX服务器返回错误!"); } } }
  以上就完成了Ajax返回Json在Java中的实现。

关于Java中如何返回Json数组java如何返回json数据的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于AJAX MVC 服务器返回Json数据,客户端获取Json数据、ajax如何经过后台返回json数组以及在在js中得到json对象、ajax调用返回php接口返回json数据 ajax jsonp ajax json实例 ajax获取后台json数、Ajax返回Json在Java中的实现等相关内容,可以在本站寻找。

本文标签: