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

时间:2016-09-05 01:54:21

标签: java json parsing while-loop

我正在尝试获取变量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 个答案:

答案 0 :(得分:0)

  1. 在类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返回给调用者,返回招标

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