Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将类似{key1=value1,key2=value2}的字符串转换为json字符串或Jsonobject?_Java - Fatal编程技术网

Java 如何将类似{key1=value1,key2=value2}的字符串转换为json字符串或Jsonobject?

Java 如何将类似{key1=value1,key2=value2}的字符串转换为json字符串或Jsonobject?,java,Java,例如: {aliSerialNumber=111111, pubmsCode=null, orderNumber=111, orderId=null, queryNo=null, msgId=null, consNo=null, userId=null, instId=null, companyId=null, appId=null, extendMap=null, pageSource=null, aliStatus=null} {"aliSerialNumber":"111111" ...

例如:

{aliSerialNumber=111111, pubmsCode=null, orderNumber=111, orderId=null, queryNo=null, msgId=null, consNo=null, userId=null, instId=null, companyId=null, appId=null, extendMap=null, pageSource=null, aliStatus=null}
{"aliSerialNumber":"111111" ...}
转换成这样:

{aliSerialNumber=111111, pubmsCode=null, orderNumber=111, orderId=null, queryNo=null, msgId=null, consNo=null, userId=null, instId=null, companyId=null, appId=null, extendMap=null, pageSource=null, aliStatus=null}
{"aliSerialNumber":"111111" ...}
Java中有我可以使用的UTIL吗

ps:字符串不是println结果,它来自日志:

您可以使用它

下面是示例测试代码,用于将字符串转换为基于Gson的
JsonObject
,并验证转换后的json是否有效。您可以使用以下相关代码

@Test
public void checkJson() {
    String json = "{aliSerialNumber=111111, pubmsCode=null, orderNumber=111, orderId=null, queryNo=null, msgId=null, consNo=null, userId=null, instId=null, companyId=null, appId=null, extendMap=null, pageSource=null, aliStatus=null}";
    JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
    assertNotNull(jsonObject);
    assertEquals(jsonObject.get("aliSerialNumber").getAsInt(),111111);
    System.out.print(jsonObject.get("aliSerialNumber"));
}
返回true


进一步了解gson

您可以在不使用任何UTIL的情况下实现这一点,如:

String str = "{aliSerialNumber=111111, pubmsCode=null, orderNumber=111, orderId=null, queryNo=null, msgId=null, consNo=null, userId=null, instId=null, companyId=null, appId=null, extendMap=null, pageSource=null, aliStatus=null}";
str = str.replace("{", "");
str = str.replace("}", "");

String[] temp = str.split(",");
String json = "{";

for (String s : temp)
{
    String key = s.split("=")[0].trim();
    String val = s.split("=")[1].trim();

    json += "\"" + key + "\":";
    json += "\"" + val + "\", ";
}

json = json.substring(0, json.length() - 2);
json += "}";

System.out.println(json);
结果如下(有效JSON):


Jackson有一个ObjectMapper,应该可以为您完成这项工作。我会将字符串解析为HashMap,然后将其转换为json。@未知它是一个字符串,而不是一个字符串hashmap@Unknown例如“你不应该在键周围加引号吗?@JoakimDanielson有,请看打印的JSON。很好,现在我在代码中看到了它。但是现在我想知道它是否适合值,处理“null”是否正确?谢谢,但是如果字符串是这样的话它就没有用了:{platform=WEB,extend\u-map=8510011370059,order\u-amt=200.00,page\u-source=MINI\u-PRODUCT,query\u-no=8510011370059,client\u-ip=223.104.145.164,pubms\u-code=ntsunsue,pro\u-infou-price=[{“pro\u-infou-price”:“200.00”,“activities”:{},“订单类型”:“02”,“pro_det_id”:623,“pro_num”:1,“pro_id”:“1903061016064145”,“pro_期间”:“pro_代码”:“-1”}],rcvbl_det={},msg_id=1552528716401774144526916641234,支付模式=1,用户_id=2088702340651417,应用程序id=201902276445292,cons_编号=8510011370059,方法=create.order,调用_source=MINI_应用程序}好吧,那是另一个问题。我为你原来的帖子做了一个解决方案。很高兴它解决了你的问题,请大家竖起大拇指