json格式数据如何存入到java类中?????????

JSON格式如下:{"idusertype":"200905011","typemsg":"这是我做的测试之一","typename":"测试数据"}
存入到java类中,不知道怎么处理:

要存到java类格试如下

UserType.java
---------------------------------------
package com.xxt.test;

/**
* Usertype entity.
*
* @author MyEclipse Persistence Tools
*/
public class Usertype {

// Constructors
String idusertype, typename, typemsg;

public String getIdusertype() {
return idusertype;
}

public void setIdusertype(String idusertype) {
this.idusertype = idusertype;
}

public String getTypename() {
return typename;
}

public void setTypename(String typename) {
this.typename = typename;
}

public String getTypemsg() {
return typemsg;
}

public void setTypemsg(String typemsg) {
this.typemsg = typemsg;
}

}
____________________________________

我通过Ajax传到后台数据,我需要将这些数据存到指定对象中,这个格式的,对过字符串处理也能实现,但这样方法太原始了

回答: json格式数据如何存入到java类中?????????

  1. 你是想要将json转化为对象吧,copy bean?是的话可以考虑用个包,具体怎么实现的,你可以看下
    http://shuaigg-babysky.iteye.com/blog/354516
    你就会明白了,这个包是可以互相转化的!

flash2.0 如何读取asp中返回过来的json格式数据

  1. Q
    flash2.0 如何读取asp中返回过来的json格式数据?
    资料和代码都可以哈……
  2. A
    已经有现成的。参考一下as3corelib.swc现在效率蛮高的。

怎么实现javascript中调用java类中的方法

  1. Q
    body中部分代码如:<center><font size="4" color="red">吊灯</font> <input type="button" id="diaodeng" value=<%=state[0]%> onclick="dianji1()"><br><br><br><br></center>
    script中的的代码如下:
    function dianji1(){      
           var abc=document.getElementById("diaodeng");
           if(abc.value=="on"){          
                   abc.value="off";       
             }
           else{          
                  abc.value="on";          
            }
         }
    要求是通过点击按钮能够调用java类中的方法从而修改数据库中的内容
  2. A
    $("button").click(function(){
      $.post("/foo/usr/11",function(data){
       
      });
    });
    
    jquery post方法调用java方法修改数据库
    

eclipse中java类中声明静态变量serialVersionUID是干什么用的?

  1. Q
    我用ide为eclipse,创建java类之后,每个java类都有一个警告信息,说没有声明静态变量serialVersionUID,请问eclipse中java类中声明静态变量serialVersionUID是干什么用的?如何声明及赋值?
  2. A
    嗯,跟Eclipse没关系。它只是建议你应该给一个serialVersionUID会比较好。这个变量的说明在java.lang.Serializable的文档里有写:
    http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/io/Serializable.html
    引用序列化运行时使用一个称为 serialVersionUID 的版本号与每个可序列化类相关联,该序列号在反序列化过程中用于验证序列化对象的发送者和接收者是否为该对象加载了与序列化兼容的类。如果接收者加载的该对象的类的 serialVersionUID 与对应的发送者的类的版本号不同,则反序列化将会导致 InvalidClassException。可序列化类可以通过声明名为 "serialVersionUID" 的字段(该字段必须是静态 (static)、最终 (final) 的 long 型字段)显式声明其自己的 serialVersionUID:

    ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;
    如果可序列化类未显式声明 serialVersionUID,则序列化运行时将基于该类的各个方面计算该类的默认 serialVersionUID 值,如“Java(TM) 对象序列化规范”中所述。不过,强烈建议 所有可序列化类都显式声明 serialVersionUID 值,原因计算默认的 serialVersionUID 对类的详细信息具有较高的敏感性,根据编译器实现的不同可能千差万别,这样在反序列化过程中可能会导致意外的 InvalidClassException。因此,为保证 serialVersionUID 值跨不同 java 编译器实现的一致性,序列化类必须声明一个明确的 serialVersionUID 值。还强烈建议使用 private 修改器显示声明 serialVersionUID(如果可能),原因是这种声明仅应用于立即声明类 -- serialVersionUID 字段作为继承成员没有用处。

Java类中设置Cookie的SetDomain属性问题

  1. Q
    在Cookie跨域时,需要设置Cookie的SetDomain参数,如果Cookie的设置保存在java类中执行,问题是这样的:
    <pre name="code" class="java">
    String domain=".test.com"
    Cookie c = new Cookie("userid", “aaaaaaa”);
    c.setPath("/");
    c.setDomain(domain);
    Cookie c1 = new Cookie("pass", member.getPassword());
    c1.setPath("/");
    c1.setDomain(domain);
    </pre>
    这样时,Cookie的作用域不起作用。
    而c.setDomain(".test.com");确可以,这是什么原因呀?
  2. A
    这文章 看看

    http://www.iteye.com/topic/34400

JavaFx Main中怎么绑定Java类中的一个static变量呢?

  1. Q
    最近遇到一个很烦的问题,搞了很久搞不定,想请各位帮忙,看看有没有解决的办法,我建了个JavaFx应用程序,Main里面要监测一个Java线程中的一个变量的变化,并把变化呈现出来,我搞了很久也没搞定...

    var output = Group {
        content: Text{
            x : 550
            y : 143
            content: bind OutputInfo.getIntance().outputInfo
            font:Font{
                size:30
            }
    
        }
    }
    

    这是Main.fx里面的一小段代码,里面的content内容是绑定到另一个类中的变量

    public class OutputInfo {
    
        public String outputInfo;
        private static OutputInfo outputInstance = new OutputInfo("Output:");
    
        OutputInfo(String outputInfo){
            this.outputInfo = outputInfo;
        }
    
        public static OutputInfo getIntance() {
            return outputInstance;
        }
        
    }
    

    这里就是需要监测的变量outputInfo

    我有一个线程,在运行之中把outputInfo改变了
     public void run() {
            DBSession db1 = new DBSession();
            DBSession db2 = new DBSession();
    
            //设置隔离级别 1为	TRANSACTION_READ_UNCOMMITTED 2为 TRANSACTION_READ_COMMITTED 4为 TRANSACTION_REPEATABLE_READ 8为 	TRANSACTION_SERIALIZABLE
            db1.setIsolationLevel(value);
            db2.setIsolationLevel(value);
    
            db1.setIsAutoCommit(false);
            db2.setIsAutoCommit(false);
    
            String sql1 = "UPDATE example SET VALUE=2 WHERE id=1";
            String sql2 = "UPDATE example SET VALUE=1 WHERE id=2";
            String sql3 = "UPDATE example SET VALUE=2 WHERE id=2";
            String sql4 = "UPDATE example SET VALUE=1 WHERE id=1";
    
            OutputInfo.getIntance().outputInfo = db1.executeUpdate(sql1);
    
            OutputInfo.getIntance().outputInfo = db2.executeUpdate(sql2);
    
            OutputInfo.getIntance().outputInfo = db1.executeUpdate(sql3);
    
            OutputInfo.getIntance().outputInfo = db2.executeUpdate(sql4);
    
            db1.rollback();
            db2.rollback();
            db1.close();
            db2.close();
    


    我这上面的executeUpdate方法会返回操作是否成功的信息,并把信息赋给OutputInfo中的outputInfo


    我自己感觉我应该写的没错,但是为什么不起作用呢,有没有那个大牛帮忙解决一下困惑,感激不尽!

    不一定非要按照我的思路来想办法,其他的办法也行,总之,JavaFx中怎么监测Java类中变量的变化呢?
  2. A
    这是个比较典型的JavaFX和Java互操作的问题,可以参考本人文章: JavaFX和Java之间的互操作性。

    基本原则是,bind仅限于JavaFX类,对Java类无效。要解决你的问题,可以这么做:

    定义一个Java的interface类 JavaInterface.java :
    public interface JavaInterface {
      public void doUpdate(String s);
    }
    


    写一个JavaFX类UpdateClass.fx实现这个interface,如下:
    /*
     * UpdateClass.fx
     *
     * @author Henry Zhang
     */
    public var updatedContent: String = "defaultValue";
    
    public class UpdateClass extends JavaInterface {
    
     public override function doUpdate( s: String): Void {
       updatedContent = s;
     }
    }
    


    在OutputInfo.java中增加一句声明:
      public static JavaInterface javafxObject ;
    



    在Main.fx中,可以这样写:
    
    OutputInfo.javafxObject = UpdateClass {};
    
    var output = Group {
        content: Text{
            x : 550  
            y : 143  
            content: bind UpdateClass.updatedContent;
            font:Font{
                size:30
            }
        }
    }
    


    最后,在你的run()方法中增加相应的通知功能,如:
      . . . . . .
    
      String result = db1.executeUpdate(sql1);   
      OutputInfo.javafxObject.doUpdate( result );
    
      result = db1.executeUpdate(sql2);   
      OutputInfo.javafxObject.doUpdate( result );
     
      . . . . . .
    



    希望对你有帮助。更多JavaFX的信息可以可以参考:JavaFX Guy博客
    JavaFX技术应用交流





正则表达式在Java类中的过滤 p 和 p/

  1. Q
    用正则表达式在Java类中的过滤<p>和<p/>

    例如:
    这句话“<p>开元旅业集团有限公司<p>在北京投资的北京开元名都酒店</p>由于开发商的恶意停电</p>”

    把上面这句话过滤了
    我想要的结果是:开元旅业集团有限公司在北京投资的北京开元名都酒店由于开发商的恶意停电
  2. A
     String str = "<p>开元旅业集团有限公司<p>在北京投资的北京开元名都酒店</p>由于开发商的恶意停电</p>";
            str =  str.replaceAll("\\<p>|</p>","");
            System.out.println(str);
    

对象转换成json格式数据,私有属性没有get方法 怎么也出来了~~

  1. Q
    Page.java
    ***********************************************************************
    package com.ufida.console.common.service;

    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;

    import com.sitechasia.webx.core.exception.BaseUnCheckedException;

    @SuppressWarnings("unchecked")
    public class Page implements Serializable {
    private static final long serialVersionUID = 2728437513842150372L;
    private int pageSize;
    private int start;
    private List data;
    private long totalCount;

    public Page() {
      this(0, 0L, 20, ((List) (new ArrayList())));
    }

    public Page(int start, long totalSize, int pageSize, List data) {
      this.pageSize = 20;
      if (pageSize <= 0 || start < 0 || totalSize < 0L) {
       throw new BaseUnCheckedException("Illegal Arguments!");
      } else {
       this.pageSize = pageSize;
       this.start = start;
       totalCount = totalSize;
       this.data = data;
       return;
      }
    }

    public long getTotalCount() {
      return totalCount;
    }

    public long getTotalPageCount() {
      return totalCount % (long) pageSize != 0L ? totalCount
        / (long) pageSize + 1L : totalCount / (long) pageSize;
    }

    public int getPageSize() {
      return pageSize;
    }

    public void setResult(List data) {
      this.data = data;
    }

    public List getResult() {
      return data;
    }

    public int getCurrentPageNo() {
      return start / pageSize + 1;
    }

    public boolean hasNextPage() {
      return (long) getCurrentPageNo() < getTotalPageCount();
    }

    public boolean hasPreviousPage() {
      return getCurrentPageNo() > 1;
    }

    public boolean isEmpty() {
      return data == null || data.isEmpty();
    }

    public int getStartIndex() {
      return (getCurrentPageNo() - 1) * pageSize;
    }

    public int getEndIndex() {
      int endIndex = getCurrentPageNo() * pageSize - 1;
      return (long) endIndex < totalCount ? endIndex : (int) totalCount - 1;
    }

    protected static int getStartOfPage(int pageNo) {
      return getStartOfPage(pageNo, 20);
    }

    public static int getStartOfPage(int pageNo, int pageSize) {
      return (pageNo - 1) * pageSize;
    }

    }
    *************************************************************************************
    此类的对象解析成json格式的数据为:
    {"currentPageNo":1,"data":[],"empty":true,"endIndex":-1,"pageSize":20,"result":[],"startIndex":0,"totalCount":0,"totalPageCount":0}

    出现"result"是理所当然的, 我不明白这里为什么会用这个"data",因为它是私有属性,而且也没有getData()方法来访问它,怎么会得出data呢?

    ************************************************************************************

    另外,我写了个测试类(作为对比,请你参考一下):

    package com.ufida.leaf.ajaxservice.internal;

    import java.util.ArrayList;
    import java.util.List;

    public class TestObject {

    private String name="liuwenhui";
    private int no=10086;
    private String sex="M";
    private List children=new ArrayList();

    public String getRenameSex(){
      return sex;
    }
    public List getSons(){
      return children;
    }
    }

    输出结果是:
    {"renameSex":"M","sons":[]}

    ***********************************************************

    问题补充:
    现在的问题是:
    上面的Page的对象解析成json格式的数据为:
    {"currentPageNo":1,"data":[],"empty":true,"endIndex":-1,"pageSize":20,"result":[],"startIndex":0,"totalCount":0,"totalPageCount":0}

    我不明白这里为什么会有这个"data",因为它是私有属性,而且也没有getData()方法来访问它,怎么会得出data呢? 按理说在这里不应该出现"data"属性啊

    问题补充:
    回一楼的lovewhzlq ,那怎么取私有属性,连私有属性都可以随便访问,那不是java的安全机制有问题吗?
    另外,既然您说可能是取到了私有属性,那我在上面提到的TestObject 里面的私有属性还是没有被解析到json中去呢~
    问题补充:
    回四楼的pan_java ,请您看看我写的那个测试类TestObject您就明白我为什么这么问了~~

    问题补充:
    回lovewhzlq 我用的json包是 json-lib-2.2.1-jdk15.jar,
    我看了您的访问私有变量的方法,那是因为您重写了toString方法,相当于你自己还是提供了访问提口给它,因为System.out.println(p)实际会执行p.toString(); 然后再打印出来的,这跟反射机制应该没有什么关系吧~~呵呵~~
    我用了反射机制取不到那个data.



    问题补充:
    我找到问题的原因了,下面是我从page.class中反编译过来的类,请看:
    package com.ufida.console.common.service;
    
    import com.sitechasia.webx.core.exception.BaseUnCheckedException;
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Page
      implements Serializable
    {
      private static final long serialVersionUID = -2073474076L;
      private int pageSize;
      private int start;
      private List data;
      private long totalCount;
    
      public Page()
      {
        this(0, 0L, 20, new ArrayList());
      }
    
      public Page(int start, long totalSize, int pageSize, List data) {
        this.pageSize = 20;
        if ((pageSize <= 0) || (start < 0) || (totalSize < 0L))
          throw new BaseUnCheckedException("Illegal Arguments!");
    
        this.pageSize = pageSize;
        this.start = start;
        this.totalCount = totalSize;
        this.data = data;
      }
    
      public long getTotalCount()
      {
        return this.totalCount;
      }
    
      public long getTotalPageCount()
      {
        return ((this.totalCount % this.pageSize != 0L) ? this.totalCount / 
          this.pageSize + 1L : this.totalCount / this.pageSize);
      }
    
      public int getPageSize() {
        return this.pageSize;
      }
    
      public void setResult(List data) {
        this.data = data;
      }
    
      public List getResult() {
        return this.data;
      }
    
      public int getCurrentPageNo() {
        return (this.start / this.pageSize + 1);
      }
    
      public boolean hasNextPage() {
        return (getCurrentPageNo() < getTotalPageCount());
      }
    
      public boolean hasPreviousPage() {
        return (getCurrentPageNo() > 1);
      }
    
      public boolean isEmpty() {
        return ((this.data == null) || (this.data.isEmpty()));
      }
    
      public int getStartIndex() {
        return ((getCurrentPageNo() - 1) * this.pageSize);
      }
    
      public int getEndIndex() {
        int endIndex = getCurrentPageNo() * this.pageSize - 1;
        return ((endIndex < this.totalCount) ? endIndex : (int)this.totalCount - 1);
      }
    
      protected static int getStartOfPage(int pageNo) {
        return getStartOfPage(pageNo, 20);
      }
    
      public static int getStartOfPage(int pageNo, int pageSize) {
        return ((pageNo - 1) * pageSize); }
    
      public List getData() {
        return this.data;
      }
    }
    


    这里面最后竟然有这个方法
     public List getData() {
        return this.data;
      }
    

    不知道什么时候编译器留下的,好气人啊,我都重新编译了一遍都没有更新到~~

    感谢大家关注,特别感谢lovewhzlq,的确在您给的代码里我学到运用反射机制改变私有变量的方法~~虽然分不多,还是意思一下哈
  2. A
    晕,看来你没看懂代码,我重写了toString方法是为了让你知道,通过反射改变私有变量的值之后的结果,证明是可以通过反射改变私有变量的,


    json-lib-2.2.1-jdk15.jar,这个官方实现的json包效率是最慢的,

    只是把对象解析成json字符串最快的就是用string-tree

struts2返回json格式数据,看看我的问题!!谢谢

  1. Q
    已经确定service层无错!
    action里这么写的:
    public void checkUserExist() throws Exception{
    		String param = request.getParameter("param");
    //		System.out.println("传入的参数值为:"+param);
    		users = new Users();
    		users.setLoginName(param);
    		//查询该用户名
    		int c = userService.checkUserHasExist(users);
    		System.out.println(c);
    		if(c!=0){
    			String info = "该用户名已存在,请重新输入!";
    			String status = "n";
    			JSONArray jsonObj = JSONArray.fromObject("[{info:"+info+",status:"+status+"}]");
    			writeJson(jsonObj.toString());
    		}else{
    			JSONArray jsonObj = JSONArray.fromObject("[{info:'该用户名可以使用!',status:'y'}]");
    			writeJson(jsonObj.toString());
    		}
    	}


    到页面的时候,直接显示出引用[{info:'该用户名可以使用!',status:'y'}]
    请问我应该怎么让他只显示,“该用户名可以使用”。
    其中的y和n表示数据提交是否正确!n表示提交错误,按说y应该提交正确了,但是还是红色字显示,意思是还是错误,虽然已经判断了是否存在用户名。
    我的jquery这么写的:
    if($(this).attr("ajaxurl")){
    						var inputobj=$(this);
    						inputobj.attr("valid",tipmsg.c);
    						$.fn.Validform.sn.showmsg(tipmsg.c,settings.tiptype,{obj:inputobj,type:1,sweep:settings.tipSweep},"hide");
    						$.ajax({
    							type: "POST",
    							url: inputobj.attr("ajaxurl"),
    							data: "param="+$(this).val()+"&name="+$(this).attr("name"),
    							dataType: "text",
    							success: function(s){
    								if(s=="y"){
    									inputobj.attr("valid","true");
    									errorobj=null;
    									$.fn.Validform.sn.showmsg(tipmsg.r,settings.tiptype,{obj:inputobj,type:2,sweep:settings.tipSweep},"hide");
    								}else{
    									inputobj.attr("valid",s);
    									errorobj=inputobj;
    									$.fn.Validform.sn.showmsg(s,settings.tiptype,{obj:inputobj,sweep:settings.tipSweep});
    								}
    							},


    JSP页面如下:
    <tr>
    					<td width="20%" align="right">
    						帐号:
    					</td>
    					<td style="width:205px;">
    						<input type="text" value="" name="users.loginName" class="inputcss" datatype="s6-18"  
    							ajaxurl="<%=basePath %>login/checkUserExist.action"  nullmsg="请输入用户名!" errormsg="帐号至少6个字符,最多18个字符,只能是数字字母下划线!" />
    					</td>
                		<td><div class="Validform_checktip">帐号至少6个字符,最多18个字符</div></td>
    				</tr>


    ajaxurl就是要检查的action。
    //表单数据是以POST方式提交过来;

    //注意json数据必须严格按如下格式输出:{"info":"demo info","status":"y"};
    //info: 输出提示信息;
    //status: 返回提交数据的状态,是否提交成功。“y”表示提交成功,“n”表示提交失败,在callback函数里可以根据该值执行相应的回调操作;
        echo '{
    "info":"数据已成功提交!",
    "status":"y"
    }';

    这是网上的那个方法,一行代码搞定全站的那个jquery,我现在要用来检查用户名是否存在!!唉
    搞了一个周末了!!!求高人
    问题补充:fire_wang 写道在success回调函数中用var data = eval(s);
    data就是你的json对象了,可以直接用data.info
    jsp页面还有这段引用$(".addUserform:eq(0)").Validform({
    tiptype:2,
    ajaxPost:true,
    callback:function(data){
    //返回数据data是json格式,{"info":"demo info","status":"y"}
    //info: 输出提示信息;
    //status: 返回提交数据的状态,是否提交成功。如可以用"y"表示提交成功,"n"表示提交失败,在ajax_post.php文件返回数据里自定字符,主要用在callback函数里根据该值执行相应的回调操作;
    //你也可以在ajax_post.php文件返回更多信息在这里获取,进行相应操作;
    var info = eval(data);
    //这里执行回调操作;
    if(info.status=="y"){
    setTimeout(function(){
    $.Hidemsg(); //公用方法关闭信息提示框;
    },2000);
    }
    }
    这里用了var data = eval(s);是否可以?
    问题补充:怎么让他在
    $(".addUserform:eq(0)").Validform({ 
    tiptype:2, 
    ajaxPost:true, 
    callback:function(data){ 
    //返回数据data是json格式,{"info":"demo info","status":"y"} 
    //info: 输出提示信息; 
    //status: 返回提交数据的状态,是否提交成功。如可以用"y"表示提交成功,"n"表示提交失败,在ajax_post.php文件返回数据里自定字符,主要用在callback函数里根据该值执行相应的回调操作; 
    //你也可以在ajax_post.php文件返回更多信息在这里获取,进行相应操作; 
    var info = eval(data); 
    //这里执行回调操作; 
    if(info.status=="y"){ 
    setTimeout(function(){ 
    $.Hidemsg(); //公用方法关闭信息提示框; 
    },2000); 
    } 
    }

    得到的就是json格式的数据呢?
  2. A
    在success回调函数中用var data = eval(s);
    data就是你的json对象了,可以直接用data.info

数据库里的内容转化成json格式数据

  1. Q
    数据库表: tree
    字段有:pid,id,name
    保存的信息如:

    0 1 总公司
    0 2 总公司1
    1 3 北京分公司
    1 4 上海分公司
    1 5 天津分公司
    0 6 总公司2
    1 7 吉林分公司
    3 8 研发部
    3 9 市场部
    3 10 销售部
    3 11 人事部
    3 12 行政部
    像这样的数据怎样才能读出json格式的tree形式数据呢?
    如:
    [
                    {title: "总公司2"},
                    {title: "总公司1", isFolder: true,
                        children: [
                            {title: "北京分公司",isFolder:true,
                            children:[
                            {title:"研发部"},
                            {title:"市场部"},
                            {title:"销售部"},
                            {title:"人事部"},
                            ]
                            },
                            {title: "上海分公司"}
                        ]
                    },
                    {title: "总公司3"}
  2. A
    http://code.google.com/p/json-simple/

    http://2008shucheng.iteye.com/blog/295083

    需要哪些JAR自己去下