使用java将json字符串转换成实体类,java json转实体对象

发布时间:2023-01-04

本文目录一览:

  1. java中把json怎么转换成数组?
  2. java,特殊类型json字符串转换成对象
  3. 如何将JSON转换成实体类集合
  4. 急,求助java高手,Json形式的字符串怎么转化成Json对象?
  5. [java el表达式问题](#java el表达式问题)
  6. 如何把这样的json串转换成对象

java中把json怎么转换成数组?

使用原生的解析:

String json = "...";

遍历数组里的值,得到每个独立的对象,然后获取对应的值设置到声明好的对象中,最终创建对象完成后添加到集合中,如我自己代码里的片段:

for (int j = 0; j < array.length(); j++) {
    obj = array.getJSONObject(j);
    Data data = new Data();
    mDataList.add(data);
}

数组声明

在数组的声明格式里,“数据类型”是声明数组元素的数据类型,可以是java语言中任意的数据类型,包括简单类型和结构类型。“数组名”是用来统一这些相同数据类型的名称,其命名规则和变量的命名规则相同。 数组声明之后,接下来便是要分配数组所需要的内存,这时必须用运算符new,其中“个数”是告诉编译器,所声明的数组要存放多少个元素,所以new运算符是通知编译器根据括号里的个数,在内存中分配一块空间供该数组使用。利用new运算符为数组元素分配内存空间的方式称为动态分配方式。

以上内容参考:百度百科-数组


java,特殊类型json字符串转换成对象

JSON与java互转的开源库有很多 Gson XStream JSONObject 等都是轻松实现实现对象与JSON字符串互转的 你这个需求很简单 以下就是代码,注意要引用一个JSONObject的jar包

String json = "{\"tdhghg\": {\"A\":\"yyrtysefsf\",\"B\":2}}";
JSONObject jsonObj = new JSONObject(json);
Iterator<String> iterator = jsonObj.keys();
while(iterator.hasNext()){
    String key = iterator.next();
    JSONObject obj = jsonObj.getJSONObject(key);
    System.out.println(obj.getString("A"));//这里就是得到A的值
    System.out.println(obj.getString("B"));//这里就是得到B的值
}

如何将JSON转换成实体类集合

package com.hp.svse;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
/**
 * Timestamp 处理器
 */
public class JsonDateValueProcessor implements JsonValueProcessor {
    private String formatDateTime ="yyyy-MM-dd HH:mm:ss";
    private String formatDate ="yyyy-MM-dd";
    public Object processArrayValue(Object value, JsonConfig config) {
        return process(value);
    }

急,求助java高手,Json形式的字符串怎么转化成Json对象?

1. jQuery插件支持的转换方式:

$.parseJSON(jsonstr);
//jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象

2. 浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:

JSON.parse(jsonstr); //可以将json字符串转换成json对象
JSON.stringify(jsonobj); //可以将json对象转换成json字符串

注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。

3. Javascript支持的转换方式:

eval('(' + jsonstr + ')');
//可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号

注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。

4. JSON官方的转换方式:

提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法; 可以在上获取到这个js,一般现在用json2.js。

java el表达式问题

第一步骤:问题总结:

el表达式默认获取的是java实体对象和map,list等集合中的数据, 如map 通过键名获取value ${key} list 则通过循环类似for一样展示

<c:forEach items="${dataListMap}" var="item">
    <li>
        <div>${item.id}</div>
        <div>${item.content}</div>
    </li>
</c:forEach>

${item.content} 现在获取的是一个json字符串 一个办法是通过截取获得(实现问题过多,不灵活不推荐),一个是在后台利用json操作将其转为map或者对应的实体类(参考第一点)。

第一种:json格式数据的传递(一般使用ajax)。

如果你想要

  1. 操作json数据格式第一种可以参考:
import com.alibaba.fastjson.JSON;
public static void main(String[] args) {
    //创建一个对象并将对象赋值
    Student st = new Student();
    st.setId(1);
    st.setName("张三");
    st.setSex("男");
    //使用fastjson转化为json字符串
    String studentJson = JSON.toJSONString(st);
    System.out.println(studentJson);
    //将json字符串转为实体对象
    Student changeStudent = JSON.parseObject(studentJson, Student.class);
    System.out.println(changeStudent.getName());
}
  1. 操作json数据格式第二种可以参考:
import java.util.List;
public static void testList(){
    //将集合对象转为json对象,json字符串
    List<Student> list = new ArrayList<Student>();
    Student st = new Student();
    st.setId(1);
    st.setName("张三");
    st.setSex("男");
    Student st2 = new Student();
    st2.setId(2);
    st2.setName("小丽");
    st2.setSex("女");
    list.add(st);
    list.add(st2);
    //将类转为json对象
    JSONArray array = JSONArray.fromObject(list);
    System.out.println(array.toString());
    //将json对象转为对应的集合类
    JSONArray arrayBean = JSONArray.fromObject(array.toString());
    List<Student> listBean = (List<Student>) JSONArray.toCollection(arrayBean, Student.class);
    //输出转换后的结果
    for (Student lst: listBean) {
        System.out.println("name:" + lst.getName());
    }
}
  1. 使用ajax调用接收后台数据:
  • 3.1 使用jquery的ajax 和servlet 网页链接
  • 3.2 使用原生js实现异步调用获取servlet数据:网页链接

第二种:将json对象转为实体类(转换方式参考第一种),并将实体类放入request或者session作用域中。

前端jsp页面引入cjstl表达式:

<%@ taglib uri="" prefix="c" %>

将数据放入request作用域中:

如何把这样的json串转换成对象

1. 简单的解析json字符串

首先将json字符串转换为json对象,然后再解析json对象,过程如下。

JSONObject jsonObject = JSONObject.fromObject(jsonStr);

根据json中的键得到它的值

String name = jsonObject.getString("name");
int num = jsonObject.getInt("num");
String sex = jsonObject.getString("sex");
int age = jsonObject.getInt("age");

2. 将json字符串转换为java对象

同样先将json字符串转换为json对象,再将json对象转换为java对象,如下所示。

JSONObject obj = new JSONObject().fromObject(jsonStr); //将json字符串转换为json对象
Person jb = (Person) JSONObject.toBean(obj, Person.class); //将json对象转换为Person对象

3. 将java对象转换为json字符串

先将java对象转换为json对象,在将json对象转换为json字符串

JSONObject json = JSONObject.fromObject(obj); //将java对象转换为json对象
String str = json.toString(); //将json对象转换为字符串

完整代码如下:

package baz.parse;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import baz.bean.Person;
public class ParseJson {
    private String jsonStr;
    public ParseJson() {
    }
    public ParseJson(String str){
        this.jsonStr = str;
    }
    /**
     * 解析json字符串
     */
    public void parse(){
        JSONObject jsonObject = JSONObject.fromObject(jsonStr);
        String name = jsonObject.getString("name");
        int num = jsonObject.getInt("num");
        String sex = jsonObject.getString("sex");
        int age = jsonObject.getInt("age");
        System.out.println(name + " " + num + " " + sex + " " + age);
    }
    //将json字符串转换为java对象
    public Person JSON2Object(){
        //接收{}对象,此处接收数组对象会有异常
        if(jsonStr.indexOf("[") != -1){
            jsonStr = jsonStr.replace("[", "");
        }
        if(jsonStr.indexOf("]") != -1){
            jsonStr = jsonStr.replace("]", "");
        }
        JSONObject obj = new JSONObject().fromObject(jsonStr); //将json字符串转换为json对象
        Person jb = (Person) JSONObject.toBean(obj, Person.class); //将json对象转换为Person对象
        return jb; //返回一个Person对象
    }
}
package baz.bean;
public class Person {
    private String name;
    private int num;
    private String sex;
    private int age;
    public Person() {
        // TODO Auto-generated constructor stub
    }
    public Person(String name, int num, String sex, int age) {
        super();
        this.name = name;
        this.num = num;
        this.sex = sex;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

将java对象转换为json字符串

package baz.cons;
import net.sf.json.JSONObject;
/**
 * 将java对象转换为json字符串
 * @author Administrator
 */
public class ConsJson {
    public ConsJson() {
        // TODO Auto-generated constructor stub
    }
    public String Object2Json(Object obj){
        JSONObject json = JSONObject.fromObject(obj); //将java对象转换为json对象
        String str = json.toString(); //将json对象转换为字符串
        return str;
    }
}

测试类:

package baz.test;
import java.util.List;
import baz.bean.Person;
import baz.cons.ConsJson;
import baz.parse.ParseJson;
public class Test {
    public static void main(String[] args) {
        //将字符串转换为json对象,然后根据建得到相应的值
        ParseJson pj = new ParseJson("{\"name\":\"gu\",\"num\":123456,\"sex\":\"male\",\"age\":24}");
        pj.parse();
        //将一个json字符串转换为java对象
        Person p = pj.JSON2Object();
        System.out.println("Name:" + p.getName());
        System.out.println("Num:" + p.getNum());
        System.out.println("Sex:" + p.getSex());
        System.out.println("age:" + p.getAge());
        //将一个java对象转换为Json字符串
        Person p1 = new Person("gu1",123,"male",23);
        ConsJson cj = new ConsJson();
        String str1 = cj.Object2Json(p1);
        System.out.println(str1);
    }
}

测试输出如下:

gu 123456 male 24
Name:gu
Num:123456
Sex:male
age:24
{"age":23,"name":"gu1","num":123,"sex":"male"}