Java 将一个String 形式的json转化成Map,比如"{"a":"1","b

Java 将一个String 形式的json转化成Map,比如"{"a":"1","b,第1张

将一个String 形式的json转化成Map的Java程序如下:

import javautilHashMap;

import javautilIterator;

import javautilMap;

import orgjsonJSONObject;

public class FFF {

 public static void main(String[] args) {

  String s="{\"a\":\"1\",\"b\":2,\"c\":\"2016-5\"}";

  JSONObject jso=new JSONObject(s);

  Map<String,Object> m=new HashMap<String,Object>();

  Iterator it = jsokeys();  

  while (ithasNext()) {  

   String key = (String) itnext();  

   Object value = jsoget(key);  

   mput(key, value);

  }

  Systemoutprintln(mtoString());

 }

}

运行结果:

{a=1, b=2, c=2016-5}

好像没有什么特别的办法,可能是我才疏学浅,

我知道的两种方式:

map是键值对存在,那么类型都是固定的,我们可以再申请个map<String ,String>遍历替换原来的map再转换成json字符串

字符串替换,用正则添加双引号:

public void testJson(){

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

    mapput("aaa", 111);

    String json = JSONtoJSONString(map);   

    String json1 = jsonreplaceAll(":", ":\"");

    json1 = json1replaceAll("}", "\"}");

    Systemoutprintln(json);

    Systemoutprintln(json1);

}

package jsonToMap;

import javautilList;

import javautilMap;

import javautilMapEntry;

import netsfjsonJSONArray;

import netsfjsonJSONObject;

/

  说明 json字符串 转成 Map/List

 /

public class JsonToMap {

public static void main(String[] args) {

//JSONArray

String jsonArrayData="[{\"a1\":\"12\",\"b1\":\"112\",\"c1\":\"132\",\"d1\":\"134\"},{\"a2\":\"12\",\"b2\":\"112\",\"c2\":\"132\",\"d2\":\"134\"},{\"a3\":\"12\",\"b3\":\"112\",\"c3\":\"132\",\"d3\":\"134\"}]";

JSONArray jsonArray = JSONArrayfromObject(jsonArrayData);

List<Map<String,Object>> mapListJson = (List)jsonArray;

for (int i = 0; i < mapListJsonsize(); i++) {

Map<String,Object> obj=mapListJsonget(i);

for(Entry<String,Object> entry : objentrySet()){

            String strkey1 = entrygetKey();

            Object strval1 = entrygetValue();

            Systemoutprintln("KEY:"+strkey1+"  -->  Value:"+strval1+"\n");

        }

}

// JSONObject 

String jsonObjectData="{\"data1\":{\"a1\":\"12\",\"b1\":\"112\",\"c1\":\"132\",\"d1\":\"134\"},\"data2\":{\"a2\":\"12\",\"b2\":\"112\",\"c2\":\"132\",\"d2\":\"134\"},\"data3\":{\"a3\":\"12\",\"b3\":\"112\",\"c3\":\"132\",\"d3\":\"134\"}}";

JSONObject jsonObject = JSONObjectfromObject(jsonObjectData);

Map<String, Object> mapJson = JSONObjectfromObject(jsonObject);

        for(Entry<String,Object> entry : mapJsonentrySet()){

            Object strval1 = entrygetValue();

            JSONObject jsonObjectStrval1 = JSONObjectfromObject(strval1);

            Map<String, Object> mapJsonObjectStrval1 = JSONObjectfromObject(jsonObjectStrval1);

            Systemoutprintln("KEY:"+entrygetKey()+"  -->  Value:"+entrygetValue()+"\n");

            for(Entry<String, Object> entry1:mapJsonObjectStrval1entrySet()){

             Systemoutprintln("KEY:"+entry1getKey()+"  -->  Value:"+entry1getValue()+"\n");

            }

            

        }

}

}

可以这样做,返回类型为html格式,把集合显示做成单个页面(listjsp),用div包含该页面,后台跳转到该页面,把div的html替换成返回来的html,页面:

<div id="list_div">

<jsp:include="listjsp">

</div>

var submitUrl = "demo!getListshtmltmp="+(new Date()getTime;

$ajax({

url: submitUrl,

type: "POST",

async: false,

cache: false,

globle: false,

dataType: "html",

beforeSend: function(XML>

首先,你先确认你的字符串是否是json格式的,如果是json格式,那你可以使用Gsonjar或json-lib-xx-jdkjar两个包来自动解析解析。

使用Gson更简单些,只需要导入一个包就可以,但是他如果使用Object解析到int型的话或自动转成double型,需要定义一个准确的类来解析,不能直接使用Object。示例:

Gson gson = new Gson();

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

map = gsonfromJson(str, mapgetClass());

GSONjar包的下载地址:>

使用json-lib包的话需要导入更多的包,需要额外导入commons-langjar、ezmorph-104jar、commons-logging-111jar、commons-collectionsjar、commons-beanutilsjar这5个包。解析示例如下:

JSONObject jb = JSONObjectfromObject(str);

Map<String, Object> map = (Map<String, Object>)jb;

如果你的字符串不是json格式,那你就需要自己使用split分割字符串,例如:

String str = "color:red|font:yahei|width:800|height:300";

String[] strs = strsplit("\\|");

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

for(String s:strs){

String[] ms = ssplit(":");

mput(ms[0], ms[1]);

}

JSONObject json = JSONObejctfromObject(map)

上面的方法转出来的结果为map的keytoString()和valuetoString() 的结果对。

SomeClass 是你的自定义类,你没有重写toString方法,默认调用的是Object类的toString方法。

你重写下SomeClass 的toString方法,输出你想要的结果,然后,转出来的JSON就不再是内存地址了

以上就是关于Java 将一个String 形式的json转化成Map,比如"{\"a\":\"1\",\"b\全部的内容,包括:Java 将一个String 形式的json转化成Map,比如"{\"a\":\"1\",\"b\、java中将map转成json时,如何将map中的整型数字在转成json后,变成字符串,而不是整型。、JSON字符串怎么转List和map集合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9870351.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存