我正在尝试传递一些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
任何想法都会有所帮助。
答案 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()说明的直接链接。