我正在尝试获取变量TenderType,TenderAmount和CrdName,因此我可以将它们发送到另一个将它们打印出来的类。我不认为我可以使用getter和setter,因为我在while循环中声明变量,以便org.json.simple解析器工作。还在学习:/非常感谢任何帮助!
Here is JSON:
{
"Tender" :
[
{
"TenderType" : "1",
"TenderAmount" : "21.00",
"CrdName" : "Visa"
}
]
}
//So for example the other class will be test() so
(FIRST CLASS)
public class test{
public String callvars(){
JSONtoVar meh = new JSONtoVar();
// ??? not sure the correct way to call any variable over???
return "";
}
}
(SECOND CLASS)
//???Not sure what to do to return variables that are already declared inside of while Parser???
package json;
import java.io.FileReader;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class JSONtoVar {
public int PARSEJson(){
try {
JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("C:\\Users\\interMind\\Desktop\\variables_json.txt"));
JSONObject jsonObject = (JSONObject) obj;
JSONArray Tender = (JSONArray) jsonObject.get("Tender");
@SuppressWarnings("rawtypes")
Iterator z = Tender.iterator();
while (z.hasNext()) {
JSONObject innerObj = (JSONObject) z.next();
//Trying to get these three strings Below
String TenderType = (String)innerObj.get("TenderType");
String TenderAmount = (String)innerObj.get("TenderAmount");
String CrdName = (String)innerObj.get("CrdName");
System.out.println("\nTender: \n" + TenderType + "\n" + TenderAmount + "\n" + CrdName);
}
}
catch (Exception e) {
e.printStackTrace();
}
return 1;
}
} //ends class
答案 0 :(得分:0)
在类JSONtoVar中的方法parseJson中,执行以下操作
一个。将parseJson的返回类型更改为Map
public Map<String,String> parseJson(){..... }
湾创建一个Hashmap
HashMap<String, String> tender= new HashMap<String, String>();
℃。在HashMap中添加TenderType,TenderAmount和CrdNo。
tender.put("TenderType",TenderType);
tender.put("TenderAmount",TenderAmount);
tender.put("CrdName",CrdName);
d。将HashMap返回给调用者,返回招标
在调用方法(test.callvars)中创建调用者类的实例并从hashmap中检索值
JSONtoVar jsonToVar=new JSONtoVar();
HashMap<String, String> mapJson=(HashMap<String, String>)jsonToVar.parseJson();
System.out.println("mapJson TenderType "+mapJson.get("TenderType"));
System.out.println("mapJson TenderAmount "+mapJson.get("TenderAmount"));
System.out.println("mapJson CrdName "+mapJson.get("CrdName"));
示例代码
public class myMain {
public static void main(String[] args) {
JSONtoVar jsonToVar=new JSONtoVar();
HashMap<String, String> mapJson=(HashMap<String, String>) jsonToVar.parseJson();
System.out.println("mapJson TenderType "+mapJson.get("TenderType"));
System.out.println("mapJson TenderAmount "+mapJson.get("TenderAmount"));
System.out.println("mapJson CrdName "+mapJson.get("CrdName"));
}
}
class JSONtoVar {
public Map<String,String> parseJson(){
HashMap<String, String> tender= new HashMap<String, String>();
/*
Get the value from JSON and set value.This has already be done by you
*/
tender.put("TenderType",TenderType) ;
tender.put("TenderAmount",TenderAmount);
tender.put("CrdName",CrdName);
return tender;
}
}