相关疑难解决方法(0)

如何防止gson将整数转换为双精度数

我的json中有整数,我不希望gson将它们转换成双打.以下不起作用:

@Test
public void keepsIntsAsIs(){
    String json="[{\"id\":1,\"quantity\":2,\"name\":\"apple\"},{\"id\":3,\"quantity\":4,\"name\":\"orange\"}]";
    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.registerTypeAdapter(Double.class,  new DoubleSerializerAsInt());
    Gson gson = gsonBuilder.create();
    List<Map<String, Object>> l = gson.fromJson(json, List.class);
    for(Map<String, Object> item : l){
        System.out.println(item);
    }
}

private static class DoubleSerializerAsInt implements JsonSerializer<Double>{

    @Override
    public JsonElement serialize(Double aDouble, Type type, JsonSerializationContext jsonSerializationContext) {
        int value = (int)Math.round(aDouble);
        return new JsonPrimitive(value);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出不是我想要的:

{id=1.0, quantity=2.0, name=apple}
{id=3.0, quantity=4.0, name=orange}
Run Code Online (Sandbox Code Playgroud)

有没有办法在我的地图中使用整数而不是双打?

{id=1, quantity=2, name=apple}
{id=3, quantity=4, name=orange}
Run Code Online (Sandbox Code Playgroud)

编辑:并非所有字段都是整数.我相应地修改了我的例子.我在网上看了很多例子,包括这个网站上的一些答案,但在这个特殊情况下它不起作用.

java json gson

12
推荐指数
3
解决办法
1万
查看次数

Java转义JSON字符串?

我有以下JSON字符串,我发送到NodeJS服务器:

String string = "{\"id\":\"" + userID + "\",\"type\":\"" + methoden + "\",\"msg\":\"" + msget + "\", \"name\":\"" + namnet + "\", \"channel\":\"" + activeChatChannel + "\", \"visitorNick\":\"\", \"agentID\":\" " + agentID + "\"}";

PrintWriter pw = new PrintWriter(new OutputStreamWriter(os, "utf-8"));
pw.println(string);
Run Code Online (Sandbox Code Playgroud)

当字符串msget包含字符"和时,问题就变成了'

在NodeJS服务器上,我正在解析JSON,如下所示:

var obj = JSON.parse(message);
Run Code Online (Sandbox Code Playgroud)

任何想法我怎么能设法发送所有字符没有问题?

java json node.js

10
推荐指数
5
解决办法
9万
查看次数

在Java中转义JSON字符串

我正在使用谷歌com.google.api.client.json.GenericJsoncom.fasterxml.jackson.core.JsonGenerator.我想序列化JSON对象并转义引号和反斜杠,以便我可以在Bash中传递该字符串.然后反序列化该字符串.

GenericJson.toString生成简单的JSON,但\n等等不会被转义:

{commands=ls -laF\ndu -h, id=0, timeout=0}
Run Code Online (Sandbox Code Playgroud)

有一个简单的方法如何得到这样的东西:

"{commands=\"ls -laF\\ndu -h\", id=0, timeout=0}"
Run Code Online (Sandbox Code Playgroud)

我不想重新发明轮子,所以如果可能的话,我想使用Jackson或现有的API.

java json jackson

7
推荐指数
2
解决办法
3万
查看次数

gson.fromJson返回空值

这是我的JSON字符串: "{'userName' : 'Bachooo'}"

将JSON字符串转换为LoginVO逻辑是:

Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
LoginVO loginFrom  = gson.fromJson(jsonInString, LoginVO.class);
System.out.println("userName " + loginFrom.getUserName()); // output null
Run Code Online (Sandbox Code Playgroud)

我的LoginVO.class是:

public class LoginVO {

 private String userName;
 private String password;

 public String getUserName()
 {
    return userName;
 }
 public void setUserName(String userName)
 {
    this.userName = userName;
 }
 public String getPassword()
 {
    return password;
 }
 public void setPassword(String password)
 {
    this.password = password;
 }

}
Run Code Online (Sandbox Code Playgroud)

注意我使用的是jdk 1.8.0_92

loginForm.getUserName()的输出是否有关于此问题NULL"Bachooo"任何想法?

java json object gson

6
推荐指数
1
解决办法
1万
查看次数

如何在 Azure 中的 ADF V2 动态内容中转义 json?

我正在调用 Azure 函数,并使用动态内容构建请求正文。

这就是我构建它的方式:

{
  "test": "Test1",
  "data": "@{activity('Upload SKU').output}"
}
Run Code Online (Sandbox Code Playgroud)

我的“数据”节点有问题。@{activity('Upload SKU').output是一个json字符串。因此动态内容会造成“混乱”。它无法逃脱它。

它创建了这个:

{
  "test": "Test1",
  "data": "{"a": "1"}"
}
Run Code Online (Sandbox Code Playgroud)

如何转义@{activity('Upload SKU').output以便{"a": "1"}创建{\"a\": \"1\"}以便可以将其视为字符串而不是作为 下的节点"data"

这就是我想要实现的目标:

{
  "test": "Test1",
  "data": "{\"a\": \"1\"}"
}
Run Code Online (Sandbox Code Playgroud)

azure azure-data-factory

5
推荐指数
1
解决办法
2956
查看次数

如何阻止Java将作为命令行参数传递的JSON字符串分离为args []的单独子单元

我想通过命令行参数将此JSON字符串传递给Java类.

{"body":"我们一定要见面,男人","startDate":"2014-05-29 11:00:00","endDate":"2014-05-29 12:00:00"," location":"Boca Raton","subject":"这是我们会议的主题."}

但是,在每个空间中,String都会被拆分.所以args [0]是

{"身体":

args [1]是

"我们

等等

我希望args [0]成为

{"body":"我们一定要见面,男人","startDate":"2014-05-29 11:00:00","endDate":"2014-05-29 12:00:00"," location":"Boca Raton","subject":"这是我们会议的主题."}

我尝试使用双引号,但由于JSON字符串中有引号,因此无效.

我怎样才能做到这一点?非常感谢!

java json spaces args command-line-arguments

3
推荐指数
1
解决办法
4822
查看次数

JSON字符串中允许换行吗?

我需要在REST OSB 12c代理的JSON内发送XML,如下所示:

{
    "login": "jstein",
    "identityContext": "jazn.com",
    "taskId": "string",
    "payload": {
        "any_0": {
            "any_01": "<afastamento xmlns:ns1='http: //www.tjsc.jus.br/soa/schemas/comagis/AfastamentoMagistrado' xsi:type='def: AfastamentoMagistradoType' xmlns:xsi='http: //www.w3.org/2001/XMLSchema-instance' xmlns='http: //xmlns.oracle.com/bpel/workflow/task'>
          <ns1:Magistrado>719</ns1:Magistrado>
          <ns1:Status>Inicial</ns1:Status>
          <ns1:Vaga>8770</ns1:Vaga>
          <ns1:Tipo>Licenca Nojo</ns1:Tipo>
          <ns1:PeriodoReferencia/>
          <ns1:DataInicialSolicitada>2015-10-10</ns1:DataInicialSolicitada>
          <ns1:DataFinalSolicitada>2015-11-05</ns1:DataFinalSolicitada>
  </afastamento>"
        }
    },
    "outcome": "Start"
}
Run Code Online (Sandbox Code Playgroud)

OSB 12c发回错误给我:

 "errorMessage" : "ORABPEL-15235\n\nTranslation Failure.\nFailed to translate
 JSON to XML. org.codehaus.jackson.JsonParseException: Illegal unquoted
 character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be
 included in string value\n at [Source: java.io.BufferedReader@7db921c7; line:
 7, column: 619]\nThe incoming data does not conform …
Run Code Online (Sandbox Code Playgroud)

xml soa json osb

2
推荐指数
1
解决办法
702
查看次数

转义字符串中的JSON控制字符

在Java中编写JSON解析器时遇到了"整容"问题:

在JSON规范中,明确指出Javascript控制字符与例如C和Java中的相同,如\n或\ t.我遇到的问题是,当JSON字符串中有控制代码时(所以在引号中:"property":"value"),然后显示的JSON代码搞砸了,因为控制字符正在改变打印,例如\n创建一个新行或\ t创建一个选项卡.

一个例子:

String s = "{\n\t\"property1\": \"The quick brown fox\njumps over the lazy dog\",\n\t\"property2\":\"value2\"\n}"

印刷为:

{ "property1": "The quick brown fox jumps over the lazy dog", "property2": "value2" }

解决方案如下所示:

String s = "{\n\t\"property1\": \"The quick brown fox\\njumps over the lazy dog\",\n\t\"property2\": \"value2\"\n}"

正确打印为:

{ "property1": "The quick brown fox\njumps over the lazy dog", "property2": "value2" }

所以我的问题是:将字符串外的控制代码与字符串中的控制代码区别对待是否正确?而且是正确的添加范围内JSON弦乐器一个反斜杠\前的任何控制字符,创建的字符串,如"\n"或"\ t"的,不会对JSON字符串的外观有什么影响?

java string parsing json escaping

0
推荐指数
1
解决办法
1万
查看次数

Java字符串如何替换"with"来逃避JSON?

我试图"\"Java 替换,但所有的斜杠都变得非常混乱."\"Java 替换的正确方法是什么?

string.replaceAll("\"","\\"");
Run Code Online (Sandbox Code Playgroud)

java regex replace escaping

0
推荐指数
1
解决办法
4368
查看次数