我可以从Firebase远程配置的默认值中获取JSONObject吗?

8

我需要从Firebase的默认值的Remote config中获取JSONObject。通过FirebaseRemoteConfig.getString(),它会被转换成字符串,但不是JSONObject,提示如下:

org.json.JSONException: Unterminated object at character xx

以下是远程config的默认值:

  <entry>
    <key>welcome_message</key>
    <value>{"version" :1,"type":"category","name":"CATEGORY"}
    </value>
  </entry>

现在我附上我的Java代码:

  String welcomeMessage = mFirebaseRemoteConfig.getString(WELCOME_MESSAGE_KEY);

  JSONObject categoryListInJson = new JSONObject(welcomeMessage);

感谢您提供答案。

打印字符串 wc,它是一个格式良好的 JSON 吗? - rkouye
不,它不是@semako。 - Vipul K. Patil
我已经在问题中完成了这个。字符串的格式为:{version:1,type:category,name:BASE CATEGORY},而“xx”的值为36,即空格字符-“ ”。 - Vipul K. Patil
是的,我需要将它作为JSON传递。@Raghunandan - Vipul K. Patil
请查看此链接 https://dev59.com/0FYN5IYBdhLWcg3wNVwW#53962895 - Fernando Jascovich
显示剩余6条评论
3个回答

1

这是Android Studio 3.0或更高版本上的错误。


你说得对。我通过使用 classpath 'com.android.tools.build:gradle:2.3.3' 解决了这个问题。https://dev59.com/0FYN5IYBdhLWcg3wNVwW#48072301 - Nabin Bhandari

0

这个问题有多种解决方案

1. 使用firebaseConfig.setDefaults(Map);来设置默认配置。

2. 在.xml文件中的字符串中的双引号(")前使用反斜杠()。

3. 替换

classpath 'com.android.tools.build:gradle:3.0.1' with
classpath 'com.android.tools.build:gradle:2.3.3'
and 
google() with
maven { url 'https://maven.google.com' }

4. 在 gradle.properties 中添加 android.enableAapt2 = false


0

我发现一个错误,当从default.xml中获取值时,字符串中的引号被剥离了。

你可以尝试以下两种方法之一吗?

  1. 启用开发者模式并将缓存过期时间设置为0。然后在Firebase远程配置控制台上设置JSON。然后在设备上进行获取。这是因为该错误不是在从控制台获取JSON时出现的,似乎只有在从默认xml中提取值时才会出现。
  2. 不要在default.xml JSON中使用字符串,而是使用数字-看看是否有效?

谢谢


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接