Json元素值返回null,但在请求体中找到

时间:2015-11-25 15:36:49

标签: json playframework playframework-2.4

我正在尝试传递一些json数据

{  
   "name":"srk",
   "age":25,
   "interests":"programming"
}

通过ajax并将请求体提取到播放控制器中,如下所示。

@BodyParser.Of(BodyParser.Json.class)
    public Result example(){
      JsonNode jsonNode = request().body().asJson();
      Logger.info("requestBody = "+ jsonNode);
    }

上述记录器准确打印请求期间发送的请求有效负载 如下所示:

{"name": "srk", "age":25, "interests" : "programming"}

但是当我尝试打印年龄时,它显示为空。

String age = jsonNode.findPath("age").textValue();
Logger.info("age= "+ age);

这是打印age= null

任何想法都会有所帮助。

2 个答案:

答案 0 :(得分:1)

您应该使用jsonNode.get("age").asInt()来获取值,而不是findPath

答案 1 :(得分:1)

由于我还不能评论,我正在以@DBug的名义写一个正确的答案。 @srk,请选择正确的答案并将问题标记为已解决=)

JSonNode age方法似乎不会在内容类型之间自动转换。由于textValue()是数字字段,因此jsonNode.findPath("age").asInt(); 实际上为空。有两种可能的解决方案:

您可以使用以下命令检索节点内容作为正确的类型:

jsonNode.findPath("age").asText();
//or
jsonNode.findPath("age").toString();

您可以使用以下任一方法将节点内容检索为字符串:

import CoreLocation

class SesionViewController: UIViewController, CLLocationManagerDelegate {

    let locationManager =  CLLocationManager()

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        CLGeocoder().reverseGeocodeLocation(manager.location!, completionHandler: { (placemarks, error) -> Void in
            if (error != nil) {
                print("Error:" + error!.localizedDescription)
                return
            }
            if placemarks!.count > 0 {
                let pm = placemarks![0] as CLPlacemark
                print(pm!.coordinate.latitude)
            }else {
                print("Error with data")
            }

        })
    }
func startButtonPress(sender:UIButton!){
        self.locationManager.delegate = self
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
        self.locationManager.requestWhenInUseAuthorization()
        self.locationManager.startUpdatingLocation()
        self.locationManager.stopUpdatingLocation()
    }
}

我在这里寻找文档:com.fasterxml.jackson.databind.JsonNode

指向textValue()说明的直接链接。

指向asInt()说明的直接链接。

指向asText()说明的直接链接。