Convert InputStream to JSONObject

前端 未结 13 1857
刺人心
刺人心 2020-12-05 03:52

I am converting InputStream to JSONObject using following code. My question is, is there any simple way to convert InputStream to JSONObject. Without doing InputStream -> Bu

相关标签:
13条回答
  • 2020-12-05 04:44

    Another solution: use flexjson.jar: http://mvnrepository.com/artifact/net.sf.flexjson/flexjson/3.2

    List<yourEntity> yourEntityList = deserializer.deserialize(new InputStreamReader(input));
    
    0 讨论(0)
  • 2020-12-05 04:50

    If you don't want to mess with ready libraries you can just make a class like this.

    public class JsonConverter {
    
    //Your class here, or you can define it in the constructor
    Class requestclass = PositionKeeperRequestTest.class;
    
    //Filename
    String jsonFileName;
    
    //constructor
    public myJson(String jsonFileName){
        this.jsonFileName = jsonFileName;
    }
    
    
    //Returns a json object from an input stream
    private JSONObject getJsonObject(){
    
        //Create input stream
        InputStream inputStreamObject = getRequestclass().getResourceAsStream(jsonFileName);
    
       try {
           BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputStreamObject, "UTF-8"));
           StringBuilder responseStrBuilder = new StringBuilder();
    
           String inputStr;
           while ((inputStr = streamReader.readLine()) != null)
               responseStrBuilder.append(inputStr);
    
           JSONObject jsonObject = new JSONObject(responseStrBuilder.toString());
    
           //returns the json object
           return jsonObject;
    
       } catch (IOException e) {
           e.printStackTrace();
       } catch (JSONException e) {
           e.printStackTrace();
       }
    
        //if something went wrong, return null
        return null;
    }
    
    private Class getRequestclass(){
        return requestclass;
    }
    }
    

    Then, you can use it like this:

    JSONObject jObject = new JsonConverter(FILE_NAME).getJsonObject();
    
    0 讨论(0)
  • 2020-12-05 04:51

    Since you're already using Google's Json-Simple library, you can parse the json from an InputStream like this:

    InputStream inputStream = ... //Read from a file, or a HttpRequest, or whatever.
    JSONParser jsonParser = new JSONParser();
    JSONObject jsonObject = (JSONObject)jsonParser.parse(
          new InputStreamReader(inputStream, "UTF-8"));
    
    0 讨论(0)
  • 2020-12-05 04:55

    You can use this api https://code.google.com/p/google-gson/
    It's simple and very useful,

    Here's how to use the https://code.google.com/p/google-gson/ Api to resolve your problem

    public class Test {
      public static void main(String... strings) throws FileNotFoundException  {
        Reader reader = new FileReader(new File("<fullPath>/json.js"));
        JsonElement elem = new JsonParser().parse(reader);
        Gson gson  = new GsonBuilder().create();
       TestObject o = gson.fromJson(elem, TestObject.class);
       System.out.println(o);
      }
    
    
    }
    
    class TestObject{
      public String fName;
      public String lName;
      public String toString() {
        return fName +" "+lName;
      }
    }
    


    json.js file content :

    {"fName":"Mohamed",
    "lName":"Ali"
    }
    
    0 讨论(0)
  • 2020-12-05 04:56

    use JsonReader in order to parse the InputStream. See example inside the API: http://developer.android.com/reference/android/util/JsonReader.html

    0 讨论(0)
  • 2020-12-05 04:56

    you could use an Entity:

    FileEntity entity = new FileEntity(jsonFile, "application/json");
    String jsonString = EntityUtils.toString(entity)
    
    0 讨论(0)
提交回复
热议问题