java中JSONException: java.lang.String cannot be converted to JSONObject

在Android系统中进行JSON解析时碰到以下问题:

org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONObject

使用Notepad++设置文件编码时,采用utf8编码,出现上面的问题。原因是文件中包含了utf8 bom头信息。采用utf8无BOM格式编码的形式即可。

具体设置,查看下图:

补充:   bom格式处理

 代码如下 复制代码
String st="utf-8的bom格式字符串内容";
byte[] bytes = st.getBytes("utf-8");
byte[] strs = new byte[bytes.length - 3];//去掉该内容的bom标示
int j = 0;
if (bytes[0] == -17 && bytes[1] == -69 && bytes[2] == -65) {//bom文件格式头字节
for (int i = 3; i < bytes.length; i++) {
strs[j] = bytes[i];
j++;
}

原因这个也是编码问题与php中的bom 格式编码也是一样一样的呀。

时间: 2024-10-27 15:30:14

java中JSONException: java.lang.String cannot be converted to JSONObject的相关文章

Java中构造函数File(String)未定义

问题描述 Java中构造函数File(String)未定义 package nmd; import java.io.*; public class FileHello { public static void main(String[] args) { try { Runtime ec=Runtime.getRuntime(); File file=new File("file.txt"); ec.exec(file.getAbsolutePath()); } catch (Excep

Java中处理日文时String equals不等的问题

String japChar = "オン"; String japGetFromOther : japGetFromOther.equals(japChar);  之前遇到一个问题, 在一个日文系统里, 由JDK返回的一个日文的值,在做equals对比时无法与java代码中已经写好的日文进行比较, 一直都是返回false. 研究了一下, 将代码改成以下: japChar = new String("オン".getBytes("SJIS"),&qu

Java中byte[]转换成String有数据丢失现象,原byte[]长度为6714转换成String被截断成6400,请教各位高手

问题描述 该问题是在HTTP通信过程中发现的,本地接收到的字符数没问题,但是在转换成String过程中出问题了.字符串发送时采用UTF-8的格式,客户端默认也是采用UTF-8,以下方法试过,不管加不加字符集限制都是一样String bString = new String(byets);主要代码BufferedHttpEntity bhe = new BufferedHttpEntity(httpResponse.getEntity());BufferedInputStream buffered

java中按字节截取String字符串.

字符串 /** * 取字符串的前toCount个字符 * * @param str 被处理字符串 * @param toCount 截取长度 * @param more 后缀字符串 * @version 2004.11.24 * @author zhulx * @return String */ public static String substring(String str, int toCount,String more) { int reInt = 0; String reStr = "

android-Value ? of type java.lang.String cannot be

问题描述 Value ? of type java.lang.String cannot be public class Register_ extends Activity{ private ProgressDialog pDialog; JSONParser jsonParser = new JSONParser(); EditText name; EditText password; Button login_button; private static String url = "htt

关于Java中bytes到String的转换

    为什么想要写这个,是因为在上周,表格存储的一个客户,告知我们在将数据通过DataX从OTS导出到ODPS后,发现数据『丢失』了.而在调查过后,发现数据并不是所谓的『丢失』了,而是数据被『改变』了.     什么原因导致数据发生了『改变』呢?却是因为一个大部分Java程序员都会忽略的问题导致的,所以我觉得有必要单独拿出来讲讲. 首先看下如下代码: byte[] original1 = new byte[]{(byte)0xef, (byte)0x8f, (byte)0x8f}; byte[

Java中的String与常量池

string是java中的字符串.String类是不可变的,对String类的任何改变,都是返回一个新的String类对象.下面介绍java中的String与常量池. 1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. new String()和new String("")都是申明一个新的空字符串,是空串不是null: 3. String st

Java中字符串 I

什么是 Java 中的字符串 在程序开发中字符串无处不在,如用户登陆时输入的用户名.密码等使用的就是字符串.其实,在前面的章节中我们就已经使用了字符串,例如我们在控制台中输出的 "Hello World" . "imooc" ."爱慕课"等. 在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序. 创建 String 对象的方法: . Java 中字符

JAVA中对存储过程的调用方法(一) 不带输出参数的

一.不带输出参数的 ---------------不带输出参数的---------------------------------- create procedure getsum @n int =0<--此处为参数--> as declare @sum int<--定义变量--> declare @i int set @sum=0 set @i=0 while @i<=@n begin set @sum=@sum+@i set @i=@i+1 end print 'the