8

I need to fetch JSONObject from default value of Remote config in Firebase. By FirebaseRemoteConfig.getString(), it gets converted to the String, but not in the JSONObject, saying

org.json.JSONException: Unterminated object at character xx

I am attaching default values of remote config below:

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

I am now attaching my Java Code below:

  String welcomeMessage = mFirebaseRemoteConfig.getString(WELCOME_MESSAGE_KEY);

  JSONObject categoryListInJson = new JSONObject(welcomeMessage);

Thanks in advance for the answers.

Vipul K. Patil
  • 128
  • 1
  • 10

3 Answers3

1

It's bug on Android Studio 3.0 or above.

kolin
  • 63
  • 7
  • You're right. I solved it by using `classpath 'com.android.tools.build:gradle:2.3.3'` https://stackoverflow.com/a/48072301/5137352 – Nabin Bhandari Jan 03 '18 at 06:34
0

I saw a bug where the quotes from strings were getting stripped when picking values from default.xml

Can you try either of 2 things?

  1. Enable developer mode and set cache expiration to 0. Then setup the JSON on firebase remote config console. Then make a fetch on device. This is because the bug isn't when JSON is fetched from console, it seemed only when pulling value from default xml.
  2. Instead of using a string in default.xml JSON, use a number - and see if that works?

Thanks

Mayank Jain
  • 2,995
  • 2
  • 23
  • 19
0

There are multiple solutions for this problem

1. Use firebaseConfig.setDefaults(Map); for setting up the default configuration.

2. Use backslash () before Double Quotes(") in your String in .xml file.

3. Replace

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. Add android.enableAapt2 = false in gradle.properties

Ankit Kumar
  • 276
  • 4
  • 6