当前位置: 首页 > 知识库问答 >
问题:

我想知道如何解析json来检索admob ID

田德运
2023-03-14

我想知道如何解析一个json对象,该对象将上载到我的服务器,以从中检索admob ad ID。

例子:

{
    "response":{
                "Interstial AD":"ca-xxxxxxxxxxx"
              }
}

将发送到

java prettyprint-override">mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("JsonDATA");
mInterstitialAd.loadAd(new AdRequest.Builder().build());

mInterstitialAd.setAdListener(new AdListener(){

    @Override
    public void onAdLoaded() {
        super.onAdLoaded();
        mInterstitialAd.show();
    }
}

任何帮助都将不胜感激!

编辑:

厌倦了这个:

  String jsonToProcess = "https://drive.google.com/uc?id=113RUepiYecy5pBwj-t4BtBXwlQwgf-dU";
        String interstialAd = new JsonParser().parse(jsonToProcess).getAsJsonObject()
                .get("response").getAsJsonObject()
                .get("Interstial AD").getAsString();

        if (getResources().getString(R.string.admob_interstitial_id).length() > 0
                && Config.INTERSTITIAL_INTERVAL > 0
                && !SettingsFragment.getIsPurchased(this)) {
            mInterstitialAd = new InterstitialAd(this);
            mInterstitialAd.setAdUnitId(interstialAd);
            AdRequest adRequestInter = new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build();
            mInterstitialAd.loadAd(adRequestInter);

            mInterstitialAd.setAdListener(new AdListener() {
                @Override
                public void onAdClosed() {
                    // Load the next interstitial.
                    mInterstitialAd.loadAd(new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build());
                }

            });
        }

我的Json文件:

{
    "response": [
        {
            "Interstial AD": "ca-app-pub-3940256099942544/1033173712"
        },
        {
            "Banner AD": "ca-app-pub-3940256099942544/6300978111"
        }
  ]
}

共有1个答案

徐涵亮
2023-03-14

使用Gson很容易做到这一点。。。

选项1:

按问题编辑编辑:

String jsonToProcess = "your json string here"  
JsonElement jsonElement = new JsonParser().parse(json);

String iterstialAd = null;
String bannerAd = null;

for (JsonElement obj : jsonElement.getAsJsonObject().get("response").getAsJsonArray()) {
    if (obj.getAsJsonObject().get("Interstial AD") != null) {
        iterstialAd = obj.getAsJsonObject().get("Interstial AD").getAsString();
        continue;
    }
    if (obj.getAsJsonObject().get("Banner AD") != null) {
        bannerAd = obj.getAsJsonObject().get("Banner AD").getAsString();
        continue;
    }
}

选项2:

创建响应模型并反序列化您的响应。。。

import com.google.gson.annotations.SerializedName;

public class ResponseModel {

    private Response response;

    public Response getResponse() {
        return response;
    }

    public void setResponse(Response response) {
        this.response = response;
    }

    public static class Response {

        @SerializedName("Interstial AD")
        public String interstialAd;

        public String getInterstialAd() {
            return interstialAd;
        }

        public void setInterstialAd(String interstialAd) {
            this.interstialAd = interstialAd;
        }
    }
}

在此之后,您可以执行以下操作:

String jsonToProcess = "your json string here";
ResponseModel model =  new Gson().fromJson(jsonResponse, ResponseModel.class);

String interstialAd = model.getResponse().getInterstialAd();

请注意,除了GSon之外,还有许多用于json操作的库,比如Jackson、org的json。json。。。

希望这对你有帮助。

 类似资料:
  • 问题内容: 我有一些看起来像这样的JSON数据: 如何使用JSON.net解析?我可以先这样做: 我需要能够遍历此列表中的每个对象。我希望能够做这样的事情: 要么 但是当然不行。如果您在编写代码时知道键,那么所有示例都可以很好地工作。如果您事先不知道密钥,它就会崩溃。 问题答案: 这是可行的;这可行,但并不优雅。我敢肯定有更好的方法。 印刷品:

  • 问题内容: 我正在使用NewtonsoftJson库来解析json,但我不知道如何使用它。我使用JObject解析了字符串。当我在即时窗口中输出JObject实例的值时,我得到了:- 我应该怎么做才能获得这个工作的价值? 问题答案: 我个人更喜欢将JavaScriptSerializer与.NET环境中的JSON一起使用。默认情况下,它将返回Dictionary结果,但可用于解析到自定义对象(或者

  • 我收到以下JSON作为响应 我正在解析这个JSON,如下所示 这很好用。 我的问题是,如果JSON中缺少任何一个键,例如“名称”丢失,它就会断裂,我将无法定义 是否可以检查是否存在,然后重试? https://jsfiddle.net/o2gxgz9r/9078/ 关于我修改了json的答案 但是他自己的财产不起作用了? 请看这把小提琴 https://jsfiddle.net/o2gxgz9r/

  • 我正在尝试获取新加坡餐馆的所有url链接,但我的代码不起作用 它在代码 我不知道为什么会发生这种情况,即使这对其他网站很有效。 这是因为行车顾问程序块爬行还是代码错误?

  • 我很困惑。据我所知,我完全遵循这些例子。也许我遗漏了一个参数,但我找不到它是什么。 控制台响应没有项目,但我有3个公共播放列表。 [Log]对象(learnadaapi.html,第68行) etag: “\”m2yskBQFythfE4irbTIeOgYYfBU/Rk41fm-2TD0VG1yv0-bkUvcBi9s\“” 项目: [] (0) 类型:“youtube#channelList响应

  • 问题内容: 只是问我是否有正确的理解 系统是打包出来的,是类println()是方法 如果这是错误的,请告诉我正确的答案是什么。 问题答案: 没有, 是类,它驻留在包中(这就是为什么您不需要导入它的原因)。 是class 的静态变量。它是 public ,因此您可以从外部访问它,并且它是 静态的, 因此它与类声明关联,而不与它的任何实例关联。 确实是一种方法。它是一个变量方法,它是一个实例。