1

Javaを使用してサーバーにJSONリクエストを行っています。以下のパラメータがあります。

{method:'SearchBySearchConfiguration',params:[{{SearchCriteria:'%arriva',
 IsAccountSearch:true,IsContactSearch:false,SearchByName:true,SearchByAddress:false
 CRMTextValues:[], CRMCurrencyValues:[]}]}

私はこのようにすることができました。

 JSONObject json=new JSONObject();
 json.put("method", "SearchBySearchConfiguration"); 

残りのパラメーターを名前と値のペアでJSONオブジェクトに追加するにはどうすればよいですか?

前もって感謝します!

4

6 に答える 6

2

私が考えることができる1つの方法は、org.jsonライブラリを使用することです。リクエストオブジェクトの一部を構築するためのサンプルを作成しました。

public static void main(String[] args) throws JSONException {

    JSONObject jsonObject = new JSONObject();
    jsonObject.put("method", "SearchBySearchConfiguration");

    JSONArray jsonArray = new JSONArray();
    JSONObject innerRecord = new JSONObject();
    innerRecord.put("SearchCriteria", "%arriva");
    innerRecord.put("IsAccountSearch", true);

    jsonArray.put(innerRecord);
    jsonObject.put("params",jsonArray);

    System.out.println("jsonObject :"+jsonObject);

}

出力は次のとおりです。

jsonObject :{"method":"SearchBySearchConfiguration","params":[{"IsAccountSearch":true,"SearchCriteria":"%arriva"}]}

もう1つの手法は、要求構造に似たJavaオブジェクトを作成することです。次に、 JacksonライブラリのObjectMapperクラスを使用してjsonに変換できます。

どちらの場合も、json文字列を取得したら、それをリクエスト本文に直接書き込むことができます。

于 2012-09-21T11:32:18.743 に答える
1
JSONObject json=new JSONObject();
  json.put("method", "SearchBySearchConfiguration"); 
  JSONArray paramsArr = new JSONArray();
    JSONObject arrobj = new JSONOject();
      arrobj.put("SearchCriteria","%arriva");
      arrobj.put("IsAccountSearch","true");
      arrobj.put("IsContactSearch","false");
      arrobj.put("SearchByName","true");
      arrobj.put("SearchByAddress","false");
      arrobj.put("CRMTextValues",new JSONArray());
      arrobj.put("CRMCurrencyValues",new JSONArray());
    paramsArr.put(arrobj);
  json.put("params",paramsArr);
于 2012-09-21T11:21:14.793 に答える
0

JSONArrayその配列を作成して配置できますJSONObject

于 2012-09-21T11:12:01.337 に答える
0

これにはgsonを使用する方がよいでしょう。

まず、次のメンバーでクラスを作成する必要があります。

public class TestClass{

    private String method;
    private ParamClass params;


    }
public class ParamClass{
    private String SearchCriteria;
    private boolean IsAccountSearch;
    private boolean IsContactSearch;
    private boolean SearchByName;
    private boolean SearchByAddress;
    private String[] CRMTextValues;
    private String[] CRMCurrencyValues;
}

使用法 :

シリアル化:

Gson gson = new Gson();    
String jsonString = gson.toJson(testClassObject);

デシリアライズ:

Gson gson = new Gson();
TestClass testClassObject = gson.fromJson(jsonString , TestClass.class);
于 2012-09-21T11:21:59.040 に答える
0

以下の例を参照してください。JSONArrayが返され、それをJSONObject形式に変換する方法...

public JSONArray go() throws IOException, JSONException {

JSONArray json = readJsonFromUrl("http://www.xxxxxxxx.com/AppData.aspx");

return json;
 }


JSONArray jarr;

for(int i=0 ; i<jarr.length() ; i++){

JSONObject jobj = jarr.getJSONObject(i);

String mainText = new String();
String provText = new String();
String couText = new String();      

try{

mainText = jobj.getString("Overview");
System.out.println(mainText);
}catch(Exception ex){}

try{

JSONObject jProv = jobj.getJSONObject("Provider");
provText = jProv.getString("Name");
System.out.println(provText);
}catch(Exception ex){}



try{                

JSONObject jCou = jobj.getJSONObject("Counterparty");
couText = jCou.getString("Value");
System.out.println(couText);
}catch(Exception ex){}

ジャクソンはJSON解析を行うのに非常に効率的です

このリンクを参照してください:

http://jackson.codehaus.org/

GsonはGoogleによって提供されており、JSONを処理するための優れた方法でもあります。

于 2012-09-21T11:22:58.153 に答える
0

パラメータを追加するには、JSONArrayを使用します。JSONObjectパラメータ内では、SearchByAddress、IsAccountSearchなどのデータを追加するために使用します。参照http://www.mkyong.com/java/json-simple-example-read-and-write-json/

package com.test.json;

import java.io.FileWriter;
import java.io.IOException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

public class JsonSimpleExample {
     public static void main(String[] args) {

    JSONObject obj = new JSONObject();
    obj.put("method", "SearchBySearchConfiguration");

    JSONArray list = new JSONArray();
    JSONObject innerObj = new JSONObject();

    innerObj.put("SearchCriteria","%arriva" );
    innerObj.put("IsAccountSearch",true);
    innerObj.put("IsContactSearch",false);
    innerObj.put("SearchByName",true);
    innerObj.put("SearchByAddress",false);
    innerObj.put("CRMTextValues",new JSONArray());
    innerObj.put("CRMCurrencyValues",new JSONArray());

    list.add(innerObj);

    obj.put("params", list);
    System.out.print(obj);

     }

}
于 2012-09-21T11:39:06.707 に答える