`
weitao1026
  • 浏览: 992044 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java中string与json互相转化

 
阅读更多

在Java中socket传输数据时,数据类型往往比较难选择。可能要考虑带宽、跨语言、版本的兼容等问题。比较常见的做法有两种:一是把对象包装成JSON字符串传输,二是采用java对象的序列化和反序列化。随着Google工具protoBuf的开源,protobuf也是个不错的选择。对JSON,Object Serialize,ProtoBuf 做个对比。

1、string转json

有三种方法

第一种:string直接转json

String json = "{\"2\":\"efg\",\"1\":\"abc\"}";   JSONObject json_test = JSONObject.fromObject(json);   将string的双引号转义即可,适用于字符串较短的

第二种:将string转为list后转为json

List<String> list = new ArrayList<String>();  list.add("username");  list.add("age");  list.add("sex");  JSONArray array = new JSONArray();  array.add(list);     

                可以使用list的add函数将需要的字符串拼接即可,但是这个只能使用jsonarry

第三种:将string转为map后转为json

 Map<String, String> map = new HashMap<String, String>();

        map.put("1", "abc");
map.put("2", "efg");
JSONArray array_test = new JSONArray();
array_test.add(map);

    JSONObject jsonObject = JSONObject.fromObject(map);

               这里使用map就可以将字符串转化为JSONArray或者JSONObject都可以,但是这里的键不能使用int型

1、json转string

先构造json:JSONObject string_to_json = JSONObject.fromObject("{\"data\": {\"pages\": [ {\"comment\": \"just for test\"},{\"comment\": \"just for test\"}],\"total_count\": 2 },\"errcode\": 0}");

对于JSONObject而言就可以直接使用


    JSONObject json_to_data = string_to_json.getJSONObject("data");即可

对于JSONArray而言就可以使用这两种

第一种:JSONArray json_to_strings = json_to_data.getJSONArray("pages");//先将JSONObject里包含的JSONArray取出
    for (Object object : json_to_strings) {//循环读取即可
     JSONObject json_to_string = JSONObject.fromObject(object);
     json_to_string.get("pages");
    } 

第二种:JSONArray json_to_strings_test = json_to_data1.getJSONArray("pages");//先将JSONObject里包含的JSONArray取出
    for (int i = 0; i < json_to_strings_test.size(); i++) {//循环读取即可
     JSONObject json_to_string1 = json_to_strings_test.getJSONObject(i);
    } 

上面全部程序的测试如图:

下面贴出代码:

//string构筑json
String json = "{\"2\":\"efg\",\"1\":\"abc\"}";
JSONObject json_test = JSONObject.fromObject(json);  
    System.out.print("json_test:"+json_test);
    System.out.print("\n");
//使用list构筑json(list只能使用JSONArray)
List<String> list = new ArrayList<String>();
        list.add("username");
        list.add("age");
        list.add("sex");
        JSONArray array = new JSONArray();
        array.add(list);
        System.out.print("array:"+array);
    System.out.print("\n");
        //初始化HashMap集合并添加数组(json必须键不能是int类型)
        Map<String, String> map = new HashMap<String, String>();
        map.put("1", "abc");
map.put("2", "efg");
JSONArray array_test = new JSONArray();
array_test.add(map);
        System.out.print("array_test:"+array_test);
    System.out.print("\n");
    JSONObject jsonObject = JSONObject.fromObject(map);  
    System.out.print("jsonObject:"+jsonObject);
    System.out.print("\n");
    //解析json
    JSONObject string_to_json = JSONObject.fromObject("{\"data\": {\"pages\": [ {\"comment\": \"just for test1\"},{\"comment\": \"just for test2\"}],\"total_count\": 2 },\"errcode\": 0}");
    JSONObject json_to_data = string_to_json.getJSONObject("data");
    JSONArray json_to_strings = json_to_data.getJSONArray("pages");
    for (Object object : json_to_strings) {
     JSONObject json_to_string = JSONObject.fromObject(object);
     json_to_string.get("pages");
     System.out.print("json_to_string.get(\"pages\"):"+json_to_string.get("comment"));
     System.out.print("\n");
    } 
    JSONObject json_to_data1 = string_to_json.getJSONObject("data");
    JSONArray json_to_strings_test = json_to_data1.getJSONArray("pages");
    for (int i = 0; i < json_to_strings_test.size(); i++) {
      JSONObject json_to_string1 = json_to_strings_test.getJSONObject(i);
      System.out.print("json_to_string1.get(\"pages\"):"+json_to_string1.get("comment"));
      System.out.print("\n");
    } 

有新的好的方法希望能够讨论

分享到:
评论

相关推荐

    javaBean--jsonObject--jsonString相互转化

    最近在研究Webservice的时候遇到一个问题,把java对象转化问json后传过去,接受的是String类型,怎么恢复到原来的java对象呢,后来再一个项目中看到了转换方法,转换顺序为javaBean--jsonObject--jsonString,还原...

    java中实体类和JSON对象之间相互转化

    Java中关于Json格式转化Object,Map,Collection类型和String类型之间的转化在我们实际项目中应用的很是普遍和广泛。最近工作的过程中也是经常有,因此,自己封装了一个类分享给大家。

    开发中复杂Json解析(LinkedTreeMap)

    开发中遇到的复杂JSON,用TypeToken来进行处理:(当然还有第二种解析方式,请查看http://blog.csdn.net/jason_996/article/details/78039799) 处理方法: 1,先将接口返回的JSON,用gson.tojson(map)方法,将...

    GSON包,JAVA对象和LIST转换成JSON字符串

    创建一个 Gson对象在调用其toJson方法将JAVA对象或集合转换成json字符串 Gson gson = new Gson(); String toJson = gson.toJson(Object o);

    JAVA JSON;String 转换为 java类

    将一串json格式的字符转化为实体类

    json转为list 涉及 java springboot

    json转为list 涉及 java springboot

    处理Java对象转Json字符串的功能

    接受对象转换为JSON数据格式并且作为字符串输出,map转换json,list转换json

    Java JSON与Object互转源代码

    高效的JSON与Object互转的工具源代码,如果JSON数据未按该工具规定的数据格式转化成对象,将转化成java.util.Map实例。 (比JSON官方的API更适用。支持对象之间的多级引用,支持Map, List等集合。不需要引用其它中间...

    java转换万能工具类附带jar包

    一个json相互转换的万能java类(JsonUtil.java), 这个下面就是万能转换类的方法注释,懂java的相信都能看懂。 /** *//** * 从一个JSON 对象字符格式中得到一个java对象 * @param jsonString * @param ...

    json相关jar包.zip

    下面进入正题,介绍在JAVA中JSON和java对象之间的互转。 要想实现JSON和java对象之间的互转,需要借助第三方jar包,这里使用json-lib这个jar包,下载地址为:https://sourceforge.net/projects/json-lib/,json-...

    list转化成JSON字符串

    可将list转化成JSON字符串 使用方法 例: List&lt;自定义类&gt; l; ListChangeToJson.ListChangeToJson classJson = new ListChangeToJson.ListChangeToJson(); classJson.ArrayToJsonAll(l, "数组名字");

    解析Json字符串直接转换为对象(包括多层List集合 嵌套)所用jar包

    解析Json字符串直接转换为对象(包括多层List集合 嵌套)所用jar包

    JSON字符串转换JSONObject和JSONArray的方法

    上找Java-json下载,并把其放到项目源代码中,这样就可以引用其类对象了 二.具体转化过程 //JSONObject String jsonMessage = "{\"语文\":\"88\",\"数学\":\"78\",\"计算机\":\"99\"}"; String value1 = null; try ...

    JSON:javaWeb后台JSON的封装包---源码

    由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。 String,Number 和 Boolean ...

    Java中驼峰与下划线相互转换

    public static String toCamelCase(String s) { if (s == null) { return null; } s = s.toLowerCase(); StringBuilder sb = new StringBuilder(s.length()); boolean upperCase = false; for (int i = 0; i ...

    android json解析

    /**实例*/ public Class&lt;T&gt; getDataClass() { return this.clazz; } /**成功*/ public abstract void onSuccess(T data);... public abstract void onFailure(int errorCode, String errorString);

    将JSON字符串转换成Map对象的方法

    页面向后台action传递一个json字符串,需要将json字符串转换成Map对象 public Map&lt;String&gt; toMap(Object object) { Map&lt;String&gt; data = new HashMap&lt;String&gt;(); // 将json字符串转换成jsonObject JSONObject ...

    Java实现HTML文件转PDF文件

    2、从后台获取数据库内容,内容是JSon格式保存的,把先JSon格式内容转化成Map //获取Map值 Map&lt;String, String&gt; map = json2Map(); 3、通过JSoup 解析HMTL内容,并动态给HMTL标签内容赋值 //解析HMTL文件并给...

    java工具类.zip

    总结了好久 1.利用public static method进行日期格式的转换 2.利用内容的Calendar object进行日期的计算...3处理json日期转化问题 4提供高精度的运算支持. 所以函数以double为参数类型,兼容int与float. 5字符串工具类

    josn包,josn工具类

    josn包,josn工具类(服务器端输出 JSON 格式数据转化)JsonUtil.Java 例如,转化map static String map2Json(Map&lt;String, Object&gt; map) { if (map.isEmpty()) return "{}"; StringBuilder sb = new ...

Global site tag (gtag.js) - Google Analytics