Java 创建JSON对象

Java 创建JSON对象,java,android,json,Java,Android,Json,我正在使用Java向服务器发出JSON请求。下面是以下参数 {method:'SearchBySearchConfiguration',params:[{{SearchCriteria:'%arriva', IsAccountSearch:true,IsContactSearch:false,SearchByName:true,SearchByAddress:false CRMTextValues:[], CRMCurrencyValues:[]}]} 我可以这样做 JSONObject

我正在使用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对象


提前谢谢

您可以创建
JSONArray
并将该数组放入
JSONObject

用于此目的更好

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);
首先,您需要创建具有以下成员的类:

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);
反序列化:

Gson gson = new Gson();    
String jsonString = gson.toJson(testClassObject);
Gson gson = new Gson();
TestClass testClassObject = gson.fromJson(jsonString , TestClass.class);

请参见下面的示例,其中返回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){}
publicjsonarray go()抛出IOException,jsoneexception{
JSONArray json=readJsonFromUrl(“http://www.xxxxxxxx.com/AppData.aspx");
返回json;
}
杰索纳雷·贾尔;

对于(int i=0;i我可以想到的一种方法是使用库。我编写了一个示例来构建部分请求对象:

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对象,然后可以使用库的ObjectMapper类将其转换为json


在这两种情况下,一旦获得json字符串,就可以直接将其写入请求正文。

要添加参数,请使用
JSONArray
。 在params内部,我们使用
JSONObject
添加数据,如SearchByAddress、IsAccountSearch..等。 参考文献