Java 如何从google api响应中获取电子邮件id

Java 如何从google api响应中获取电子邮件id,java,google-api,google-oauth,Java,Google Api,Google Oauth,我能够使用oath2从Google API响应中获取用户信息。但我不知道如何单独得到这些回答 我从谷歌Api得到的回应: * 但我只想在数据库表中单独保存“id”和“name”。我怎样才能做到这一点? 通过使用下面的代码,我得到了上面的响应/输出 public static void main(String[] args) throws IOException { -------------------------

我能够使用oath2从Google API响应中获取用户信息。但我不知道如何单独得到这些回答

我从谷歌Api得到的回应: *

但我只想在数据库表中单独保存“id”和“name”。我怎样才能做到这一点?

通过使用下面的代码,我得到了上面的响应/输出

             public static void main(String[] args) throws IOException 
          {

            -------------------------
            -------------------------
            -------------------------        

            String accessToken = authResponse.accessToken;
            GoogleAccessProtectedResource access = new GoogleAccessProtectedResource(accessToken, TRANSPORT, JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, authResponse.refreshToken); 
            HttpRequestFactory rf = TRANSPORT.createRequestFactory(access);
            System.out.println("Access token: " + authResponse.accessToken); 
            String url = "https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token="   + authResponse.accessToken;
                final StringBuffer r = new StringBuffer(); 
                    final URL u = new URL(url);
                    final URLConnection uc = u.openConnection();
                    final int end = 1000;
                    InputStreamReader isr = null;
                    BufferedReader br = null; 
                        isr = new InputStreamReader(uc.getInputStream());
                        br = new BufferedReader(isr);
                        final int chk = 0;
                        while ((url = br.readLine()) != null)
                        {
                            if ((chk >= 0) && ((chk < end)))
                            {
                                r.append(url).append('\n');
                            }
                         } 
              System.out.print("");
              System.out.println();
 System.out.print(" "+   r ); //this is printing at once but i want them individually
              access.refreshToken();
 System.out.println("Original Token: " + accessToken + " New Token: " + access.getAccessToken());
          }
publicstaticvoidmain(字符串[]args)引发IOException
{
-------------------------
-------------------------
-------------------------        
字符串accessToken=authResponse.accessToken;
GoogleAccessProtectedResource access=新的GoogleAccessProtectedResource(accessToken、传输、JSON\u工厂、客户端\u ID、客户端\u机密、authResponse.refreshToken);
HttpRequestFactory rf=TRANSPORT.createRequestFactory(访问);
System.out.println(“访问令牌:+authResponse.accessToken”);
字符串url=”https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=“+authResponse.accessToken;
final StringBuffer r=新StringBuffer();
最终URL u=新URL(URL);
最终URLConnection uc=u.openConnection();
最终int端=1000;
InputStreamReader isr=null;
BufferedReader br=null;
isr=新的InputStreamReader(uc.getInputStream());
br=新的缓冲读取器(isr);
最终int chk=0;
而((url=br.readLine())!=null)
{
如果((chk>=0)和((chk
好吧,您可以在整个生成的JSON对象上使用类似JSON的库(围绕简单性设计;示例),也可以使用您自己的正则表达式代码。类似于以下内容的内容可能适用于后者:

//.... other existing code
String pat = "\"(.*)\": \"(.*)\"";
Pattern pattern = Pattern.compile(pat);
Matcher matcher = null;
Map<String,String> map = new HashMap<String,String>();

while ((url = br.readLine()) != null) {
    if ((chk >= 0) && ((chk < end))) {  
        matcher = pattern.matcher(url);
        if(matcher.find()) {
            map.put(matcher.group(1), matcher.group(2));
        }
        //r.append(url).append('\n');
    }
} 
System.out.println(map.get("id"));
//... rest of code
/。。。。其他现行守则
字符串pat=“\”(.*)\”:\“(.*)\”;
Pattern=Pattern.compile(pat);
Matcher-Matcher=null;
Map Map=newhashmap();
而((url=br.readLine())!=null){
如果((chk>=0)&((chk

库方法可能是过多的,但可能会处理数据类型转换等。也会处理非字符串数据类型与我的悲伤正则表达式。

2美分:您可能想考虑不在读取循环中重用URL变量。你节省了一点点内存,如果这是你的意图的话,但是代码的清晰度受到了影响。谢谢,我得到了身份证。但是你是如何知道这些事情的。我也想通过回答别人的问题来帮助他们,比如你是如何回答我的问题的。
//.... other existing code
String pat = "\"(.*)\": \"(.*)\"";
Pattern pattern = Pattern.compile(pat);
Matcher matcher = null;
Map<String,String> map = new HashMap<String,String>();

while ((url = br.readLine()) != null) {
    if ((chk >= 0) && ((chk < end))) {  
        matcher = pattern.matcher(url);
        if(matcher.find()) {
            map.put(matcher.group(1), matcher.group(2));
        }
        //r.append(url).append('\n');
    }
} 
System.out.println(map.get("id"));
//... rest of code