我试图获得变量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
-
在类JSONtoVar的方法parseJson中,执行以下操作
。将parseJson的返回类型更改为Map
public Map<String,String> parseJson(){..... }
b。创建Hashmap
HashMap<String, String> tender= new HashMap<String, String>();
c。新增HashMap中的TenderType、TenderAmount和CrdNo
tender.put("TenderType",TenderType); tender.put("TenderAmount",TenderAmount); tender.put("CrdName",CrdName);
d。返回HashMap给调用方,返回投标
-
在主叫方法(test. 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; } }