Java 在Android中解析JSON包

Java 在Android中解析JSON包,java,android,json,Java,Android,Json,我在Android中解析JSON包时遇到了一些困难 我现在已经设置好了一切,所以JSON是一个对象数组,然后每个对象都有一个属性数组。例如,假设我的包中有一个名为Colors的对象。然后,每个颜色条目都将位于颜色对象中。每个颜色条目也会有R、G、B值的条目 这种类型,我可以处理的很好。但是,我现在遇到了一个实例,其中一个条目(其中的R、G、B值应该是)包含一个数组。我不知道如何访问和处理它 我将用一个JSON包的例子进行更新,因为我担心我不是很清楚 编辑:这里是JSON。假设我想访问ColorO

我在Android中解析JSON包时遇到了一些困难

我现在已经设置好了一切,所以JSON是一个对象数组,然后每个对象都有一个属性数组。例如,假设我的包中有一个名为Colors的对象。然后,每个颜色条目都将位于颜色对象中。每个颜色条目也会有R、G、B值的条目

这种类型,我可以处理的很好。但是,我现在遇到了一个实例,其中一个条目(其中的R、G、B值应该是)包含一个数组。我不知道如何访问和处理它

我将用一个JSON包的例子进行更新,因为我担心我不是很清楚

编辑:这里是JSON。假设我想访问ColorOverlays中的R值

{“包”:[ {“ThingId”:[{“ProgramId”:73,“TypeId”:68,“CategoryId”:null,“CategoryName”:null,“ThingId”:121,“ThingName”:“Mahalo”,“ThingDescription”:“开始你的节日,拍几张照片!”,“ThingPrice”:0.00,“SellerProductId”:null,“Number2”:1342655700,“Number1”:1342655700,“IsAvailable”:true,“ImageOverlays”:[{“ThingId”:121,“ThingOverlayId”:295,“ImageOverlayid”:295,“ImageOverlayBase64”:null,“ImageOverlayFileTypeExtension”:null,“Width”:1024,“Height”:1024,“A”:1.00000,“BlendModeId”:1,“OrderNum”:2,“IsUseSource”:false}],“ColorOverlays”:[{“ThingId”:121,“ThingOverlayId”:294,“R”:157.00000,“G”:71.00000,“B”:187.00000,“A”:0.52873,“BlendModeId”:6,“OrderNum”:1}],“ThingsampleImageBase64”:null,“ThingSampleImageTypeExtension”:,“ThingsampleImageWidth”:546,“ThingsampleImageHeight”:546,“捕获”:[{“ThingCaptureId”:87,“ThingId”:121,“CaptureFrameOverlayId”:null,“IsRemoved”:false,“AddDate”:1342637814,“LastUpdate”:1342637814,“饱和度”:0.0,“对比度”:0.0,“亮度”:0.0,“低”:null,“中”:null,“高”:null,“IsBlackWhite”:null,“IsInvert”:null,“IsSepia”:null}],“IsRemoved”“:false},{“ProgramId”:73,“TypeId”:68,“CategoryId”:null,“CategoryName”:null,“ThingId”:122,“ThingName”:“非常爱”,“ThingDescription”:“使用这个!”,“ThingPrice”:0.00,“SellerProductId”:null,“Number2”:1342667100,“Number1”:1342667100,“IsAvailable”:true,“ImageOverlays”:[{“ThingId”:122,“ThingOverlayId”:298,“ImageBase64”:null,“ImageOverlayFileTypeExtension”:null,“Width”:1024,“Height”:1024,“A”:1.00000,“BlendModeId”:4,“OrderNum”:3,“IsUseSource”:false}],“ColorOverlays”:[{“ThingId”:122,“ThingOverlayId”:296,“R”:213.00000,“G”:86.00000,“B”:143.00000,“A”:0.77777,“BlendModeId”:4,“OrderNum”:1},{“ThingOverlayId”:122,“ThingOverlayId”:297,“R”:127.00000,“G”:127.00000,“A”“:0.50000,“BlendModeId”:1,“OrderNum”:2}],“ThingsampleImageBase64”:null,“ThingsampleImageFileTypeExtension”:““ThingsampleImageWidth”:546,“ThingsampleImageHeight”:546,“CaptureId”:122,“CaptureFrameOverlayId”:null,“IsRemoved”:false,“AddDate”:1342649164,“LastUpdated”:1342649164,“饱和度”:0.0,“对比度”:0.0,“亮度”:0.0,“低”:空,“中”:空,“高”:空,“IsBlackWhite”:空,“IsInvert”:空,“IsSepia”:空}],“IsRemoved”:假}]}
]}

您的代码示例最有助于提供帮助。这取决于RGB值数组的构建和传递方式。如果它是一个简单的逗号分隔字符串,则可以执行以下操作:

try {

        JSONArray jArray = new JSONArray(jString);

        for (int i=0; i<jArray.length(); i++) {

            JSONObject jo = jArray.getJSONObject(i);
                    String RGBVal = jo.getString("rgb_list");
                    String[] rgbArray = RGBVal.split(",");
                    ....
试试看{
JSONArray jArray=新的JSONArray(jString);

对于(int i=0;i),如果这不是第一次使用后会扔掉的东西,那么你可以考虑通过在域之后建模java对象来提高这个级别。 使用任何在线JSON可视化工具都可以在3D中查看JSON

然后,按照以下教程进行操作


什么是JSON包?您使用JSONObject.JSONArray类来处理JSON,或者使用Jackson/Gson?您在我键入代码时发布了代码……如果可以,我会再次阅读并编辑我的答案。在此之前,请忽略我……:)