2012-09-21 201 views
1

我正在向使用Java的服務器發出JSON請求。以下是以下參數。創建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對象?

在此先感謝!

回答

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); 
0

的,你可以創建JSONArray,並把數組中JSONObject

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); 
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是由谷歌提供W¯¯這也是處理JSON的好方法。

2

我能想到的一種方法是使用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"}]} 

另一種方法是建立類似於您的請求結構的Java對象。然後你可以使用Jackson庫的ObjectMapper類將它轉換成json。

在這兩種情況下,一旦你得到json字符串,你可以直接將它寫入請求體。

0

要添加params,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); 

    } 

}