如何在Jersey中接受JSON作为字符串

时间:2015-05-22 22:54:20

标签: java javascript json jersey

我正在尝试在我的webapp中维护一些Javascript对象的日志。记录它们的最简单方法是将它们串化并将它们作为字符串放在球衣路径上。

我的记录器可以正常使用常规字符串但是提供 错误400:当我传递JSON字符串化对象时,客户端发送的请求在语法上不正确 。有两件事我无法解释并且我的代码出错:

  1. 我的开发服务器上的所有内容似乎都运行良好,但在部署它的服务器上却没有。我在Mac / Homebrew / Tomcat环境中开发并部署在CentOS服务器上。

  2. 即使在CentOS服务器上,当我将一个简单的单词字符串作为消息传递但是传递一个JSON字符串时,日志记录工作正常。

  3. 我的记录器代码如下所示:

    struct Job {
        let jobDescription: String
        let days: [String]  // or even an enum for the days of the week
        let hourlyPay: Double
    }
    
    var jobArray = [
        Job(jobDescription: "Dog Walker", days:  ["Monday", "Wednesday", "Friday"], hourlyPay: 7),
        Job(jobDescription: "Babysitter", days:  ["Tuesday", "Wednesday"], hourlyPay: 15),
        // etc
    ]
    

    我曾尝试调查catalina原木,但它并没有告诉任何事情。访问日志不会提供比指定"错误400"。

    更多的信息

2 个答案:

答案 0 :(得分:1)

如果您不在JSON字符串中转义引号,则可能会发生这种情况。尝试用\"

来逃避它

答案 1 :(得分:0)

Json String可能有“Spaces”等等。

因此,当您拨打http://yourserver/logEvent/oneword/onewordMessage时,它可能会正常工作,但是当您使用空格和&来呼叫http://yourserver/logEvent/oneword时和许多事情/或一条带有“而不是”等的信息

然后在第二种情况下,您的路径可能编码不正确。表单对您的json流进行编码,然后将其作为路径传递。

更好地转移到Post,并将流作为请求主体传递。不确定为什么你更喜欢使用“整个”json文件作为服务的路径