使用org.json.simple json解析器将变量从while循环传递到另一个类



我试图获得变量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
  1. 在类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给调用方,返回投标

  2. 在主叫方法(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;
    
      }
    }
    

最新更新