我有以下Json结构:
{
"name": "John",
"surname": "Doe",
"languages": [
{"language": "english", "level": "3"},
{"language": "french", "level": "1"}
]
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Play Framework来解析HTTP消息中的Json数据,该消息是使用自行开发的REST服务发送的.我已经知道如何通过查看文档来解析Json数据中的名称和姓氏,这可以通过以下方式完成:
JsonNode json = request().body().asJson();
String name = json.findPath("name").textValue();
String surname = json.findPath("surname").textValue();
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,我如何解析Json数据中的数组"语言".我发现了一些关于这个问题的其他帖子,但他们都使用Scala,我无法理解,所以我最好找一个Java解决方案.
我已经尝试了几件事,例如:
List<JsonNode> languages = json.findPath("languages").getElements();
Run Code Online (Sandbox Code Playgroud)
根据文档,json.findPath()返回一个JsonNode,在其上可以调用函数getElements(),它将返回JsonNode的Iterator.但是我在getElements上遇到编译错误:"JsonNode类型的方法getElements()未定义"
谁知道解析这样一个数组的简单方法?提前致谢
我有一个控制器动作,我需要调用第三方Web服务.
我的问题是我没有打电话给一个网络服务.我需要链接4到5个Web服务.我调用的每个Web服务都返回一个我需要处理的JSON对象,并根据一些逻辑决定调用另一个Web服务(来自4个Web服务)或者向调用者返回响应.这是我想要做的:
public static Promise<Result> accounts(){
return WS.url("url1").get().map(response1 -> {
JsonNode mynode = response1.asJson();
if (mynode.get("status").asInt()==200){
Promise<JsonNode> jsonPromise = WS.url("url2").get().map(response2->{
return response2.asJson();
});
}
return ok(mynode);
});
}
Run Code Online (Sandbox Code Playgroud)
现在,从文档中,我认为我需要的是链接每个Web服务调用是承诺的承诺.但我不知道该怎么做?
谢谢
有没有办法迭代routes文件中描述的所有服务?需要URL和HTTP方法.
我需要此功能来运行一些集成测试.
我正在使用Play for Java.
这是一个2部分问题.我所拥有的是一个3 Fragment布局,当用户点击另一个片段中的按钮时,动态添加第3个片段(FragmentC).然后,在添加之后,第3个片段有一个按钮,可以最大化/最小化它.
更新: Scrool最后解决方案
问题1:
我正在尝试更改FrameLayout的visibility属性,该属性充当第3个片段(R.id.fragment_C)的容器.
代码应该做的是生成另一个片段,该片段最初具有包含android:visibility ="gone"的XML.然后,在点击按钮时添加片段,并且可见性将变为可见.
我知道这已经被覆盖过了,但是经过4个小时的努力才能让它发挥作用我决定问我做错了什么.
问题2:
在生成第3个片段后,我有一个最小化/最大化按钮,它应该隐藏前2个片段并允许第3个片段填满屏幕.
问题是使用.setVisibility(View.GONE)时,前两个片段的视图不会被删除.之前已经介绍过,但我无法弄清楚为什么它在我的代码中不起作用.
到目前为止的代码(对不起,如果它是详细的,但我认为最好包括所有细节为你们):
main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:orientation="vertical"
>
<FrameLayout
android:id="@+id/fragment_A"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="#CCCCCC"
>
</FrameLayout>
<FrameLayout
android:id="@+id/fragment_B"
android:layout_width="fill_parent"
android:layout_height="300dp"
android:layout_below="@id/fragment_A"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp"
android:background="#B4B4B4"
>
</FrameLayout>
<FrameLayout
android:id="@+id/fragment_C"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/fragment_B"
android:layout_centerHorizontal="true"
android:layout_marginTop="0dp"
android:background="#A3A3A3"
android:visibility="gone"
>
</FrameLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
土地/ main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:paddingLeft="0dp"
android:paddingRight="0dp" >
<LinearLayout
android:id="@+id/fragments_container"
android:layout_width="fill_parent"
android:layout_height="200dp"
android:baselineAligned="false" >
<FrameLayout
android:id="@+id/fragment_A"
android:layout_width="fill_parent"
android:layout_height="fill_parent" …Run Code Online (Sandbox Code Playgroud) 最近我在使用 java play 框架时遇到了一个问题。在路由文件中设置的路由附加到控制器中的方法。
当我查看日志时,我看到控制器中的方法被调用了两次,而只对服务器进行了一次调用以连接到附加路由。
这是框架的问题吗?
路线:
POST /production/publication/success controllers.Application.importDataAndUpdate()
Run Code Online (Sandbox Code Playgroud)
应用程序.java
Set<String> requestHeader = request().headers().keySet();
Iterator<String> it = requestHeader.iterator();
while (it.hasNext()) {
Logger.debug(request().getHeader(it.next()));
}
Run Code Online (Sandbox Code Playgroud)
当调用中的有效负载很大时,日志显示应用程序 java 中的方法被调用了两次。为什么会发生这种情况?
我们的沙发数据库网址是http://10.1.5.88:5984/_utils/database.html?testdata/
我想检索给定密钥的所有文档.我不确定我们是否可以通过在上面的url中传递密钥作为查询参数进行搜索.
请告诉我如何通过浏览器显示查询结果.
例如:获取key ="countryname"的所有文档.
谢谢.
我使用JBoss AS 7.1作为服务器,我的DataSource配置了池.我对此很陌生,所以请原谅任何新手的错误...毕竟我在这里学习.
当客户端登录时,它会获得与数据库的连接,我需要保持该连接(从池中)打开,直到用户注销或HttpSession到期.这是来自我们的数据库管理员的绝对要求.谁说他需要DB会话变量.我正在使用servlet来实现这一切.
玩我遇到的两个主要问题:
据我所知,JBoss会自动关闭未使用的连接=>我打开的连接返回到池中.所以这可能不是正确的道路.
如果我尝试存储/调用Connection对象,如下所示:
private Hashtable<String, Connection> connections = new Hashtable<String, Connection>();
try {
String strDSName1 = "java:/OracleDSJNDI";
ctx = new InitialContext();
ds1 = (javax.sql.DataSource) ctx.lookup(strDSName1);
System.out.println("Got 1'st ds.");
} catch (Exception e) {
System.out.println("ERROR getting 1'st DS : " + e);
}
connection = ds1.getConnection();
connections.put(session.getId(), connection);
conn = (Connection) connections.get(sessionID);
Run Code Online (Sandbox Code Playgroud)
它抛出此异常:
java.sql.SQLException:Connection与托管connection.org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6@dee1f37无关
我的问题是:如何正确保持我的连接打开?
谢谢
java ×5
arrays ×1
couchdb ×1
datasource ×1
jackson ×1
jboss ×1
json ×1
routes ×1
visibility ×1